1

使用 CakePHP 1.3 我创建了一个带有 FooController 的小应用程序。在这个 FooController 中,我使用 Paginator 将 Foo 的内容传递给它的视图。

在 FooController 类的头部,我自定义了来自 Foo 的数据的准备,如下所示:

var $paginate = array(
  'limit' => 100,
  'order' => array('Order.created' => 'desc'));

现在我想将“limit”的值放入配置文件中。

所以我$config['list_length'] = '500';在 config 目录中创建了一个文件,我在 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 概念不是很精通。在我目前的工作中,我没有太多机会进行一点编程,所以我真的没有练习了。

我非常感谢有关如何执行此操作的任何提示,甚至更多关于我在这里缺少什么概念的提示,因此我可以阅读一些有关它的信息。

4

1 回答 1

2

几乎是对的;

PHP 在第一个示例中给您错误的原因是无法使用“动态”值设置类属性;从文档中:

这个声明可能包括一个初始化,但这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息才能被评估。

http://www.php.net/manual/en/language.oop5.properties.php

如果您需要将属性设置为“动态”值(例如函数的结果),则需要从类“方法”中分配 if

您在第二个示例中尝试执行此操作,但是,应该使用来访问类/对象的属性$this->nameOfTheProperty以指示它不是“变量”,而是对象的“属性”

public function beforeFilter() {
    parent::beforeFilter();

    $this->paginate['limit'] = Configure::read('list_length');
}

希望这可以帮助

于 2013-03-29T22:51:09.950 回答