如何使用CakePHP在变量var $ paginate中传递变量

时间:2012-10-15 08:54:01

标签: cakephp date pagination

我的分页完全像这样:

var $paginate = array(
            'Article' => array(
                'conditions' => array(
                    'Article.visible' => true),
                'order' => array('Article.creation_date DESC', 'Article.id DESC'),
                'limit' => 11
            )
        );

但我想用这样的出版日期过滤我的文章

var $paginate = array(
            'Article' => array(
                'conditions' => array(
                    'Article.visible' => true,
                    'Article.publication_date <= ' => date('Y-m-d H:i:s')),
                'order' => array('Article.creation_date DESC', 'Article.id DESC'),
                'limit' => 11
            )
        );

但似乎没有接受date()函数。 这不是好语法。 有人能帮帮我吗? 非常感谢。

2 个答案:

答案 0 :(得分:1)

如果您要执行此操作,则必须在要分页的操作中或$this->paginate = array()函数中使用__construct()

实例化对象时,不能执行类似的功能。

对于运行时的任何类型的方法调用都是如此。

答案 1 :(得分:0)

您不能在类级别的数组声明中使用函数。您可以做的是在控制器中使用beforeFilter()回调来初始化$paginate变量,如下所示:

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

    $this->paginate = array(
            'Article' => array(
                'conditions' => array(
                    'Article.visible' => true,
                    'Article.publication_date <=' => date('Y-m-d H:i:s')),
                'order' => array('Article.creation_date DESC', 'Article.id DESC'),
                'limit' => 11
            )
        );
}