0

私はcakeDC(https://github.com/CakeDC/search)のsearchpluginをcakePHP2.3.0で使用しています。そのプラグインは正常に動作します。このようなインデックスアクションで少しエラーが発生しました。それをありがとう。

Indirect modification of overloaded property AtlasController::$paginate has no effect [APP\Controller\AtlasController.php, line 47]

マイインデックスアクション

public function index() {
    $this->Prg->commonProcess();
    $this->paginate['conditions'] = $this->Atla->parseCriteria($this->passedArgs);
    $this->Atla->recursive = 0;
    $this->set('atlas', $this->paginate());
    $this->set('_serialize',array('atlas'));
}

問題は、どうすればそれを解決できるかということです。だから私はとてもシンプルで簡単な方法を見つけました。

4

2 に答える 2

0

つまり、これが私の実装で実行されるソリューションです。

paginate()を変更します-から呼び出します。

$this->set('atlas', $this->paginate());

新しいpaginate()へ-呼び出します。

this->set('atlas', $this->paginate($this->Atla->parseCriteria($this->passedArgs)));

ここに新しいインデックスアクションがあります。

public function index() {
    $this->Prg->commonProcess();
    $this->Atla->recursive = 0;
    $this->set('atlas', $this->paginate($this->Atla->parseCriteria($this->passedArgs)));
    $this->set('_serialize',array('atlas'));
}
于 2013-02-28T20:11:38.040 に答える
0

コードがそのままでは機能しなかった理由が['options']鍵だと思います。からキーを削除し$this->paginate['options']、モデルを paginate in の引数として追加する
$this->set()と、ページネーションが期待どおりに機能するはずです。以下の変更されたコード例を参照してください。

public function index() {
    $this->Prg->commonProcess();
    $this->paginate = $this->Atla->parseCriteria($this->passedArgs);
    $this->Atla->recursive = 0;
    $this->set('atlas', $this->paginate('Atla'));
    $this->set('_serialize',array('atlas'));
}
于 2013-10-28T08:41:46.967 に答える