使用CakePHP 1.3我创建了一个具有FooController的小应用程序。在这个FooController中,我使用Paginator将Foo的内容传递给它的视图。
在FooController类的头部,我定制了来自Foo的数据准备,如下所示:
var $paginate = array(
'limit' => 100,
'order' => array('Order.created' => 'desc'));
现在我想将'limit'的值放入配置文件中。
所以我在config目录中创建了一个文件$config['list_length'] = '500';
,我在bootstrap.php中加载。这很好,我可以回应list_length
的值,例如在类的beforeFilter()
中。
但是我没有让Paginator使用那个值。
首先我尝试了:
var $paginate = array(
'limit' => Configure::read('list_length'),
'order' => array('Order.created' => 'desc'));
但是由于以下PHP错误而失败:
Parse error: syntax error, unexpected '(', expecting ')' in xyz/app/controllers/foo_controller.php on line 9
然后我尝试了:
public function beforeFilter() {
parent::beforeFilter();
$paginate['limit'] = Configure::read('list_length');
}
但它仍会使用值'100'而不是'500'。
我想这是一个相当微不足道的问题,实际上来自于我对基本PHP概念不太熟练的事实。我没有太多机会在我目前的工作中做一点编程,所以我真的没有实践。
我非常感谢有关如何做到这一点的任何提示,更多关于我在这里缺少什么概念的提示,所以我可以阅读一些关于它的内容。
答案 0 :(得分:2)
你几乎做对了;
PHP在第一个示例中给出错误的原因是无法使用“动态”值设置类属性;来自文档:
此声明可能包含初始化,但此初始化必须是常量值 - 也就是说,必须能够在编译时进行评估,并且不能依赖于运行时信息的顺序待评估。
http://www.php.net/manual/en/language.oop5.properties.php
如果您需要将属性设置为“动态”值(例如函数的结果),则需要在类'方法'中指定if
您尝试在第二个示例中执行此操作,但是,应使用$this->nameOfTheProperty
访问类/对象的属性以指示它不是“变量”,而是'property'强烈的>对象;
public function beforeFilter() {
parent::beforeFilter();
$this->paginate['limit'] = Configure::read('list_length');
}
希望这有帮助