0

私のページネーションは次のように完全に機能しました:

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() 関数は受け入れられないようです。それは良い構文ではありません。誰でも私を助けることができますか?よろしくお願いします。

4

2 に答える 2

1

これを行いたい場合$this->paginate = array()は、ページネーションしているアクションまたは__construct()関数で使用する必要があります。

オブジェクトがインスタンス化されている場合、そのような関数を実行することはできません。

これは、実行時のあらゆるタイプのメソッド呼び出しに当てはまります。

于 2012-10-15T09:52:26.847 に答える
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
            )
        );
}
于 2012-10-15T09:57:33.250 に答える