1

CakeDC (cakephp 2.x)(https://github.com/CakeDC/search) による Cakephp 検索プラグインの 2.0 バージョンを使用しています。多くのモデルで検索する必要がありますが、そのモデルは関連していません。そこで、新しいモデル (検索) とコントローラー (検索) を作成します。このエラーが発生しました

「通知 (8): オーバーロードされたプロパティ SearchesController::$paginate の間接的な変更は効果がありません [APP/Controller/SearchesController.php、17 行目]」

モデル:

App::uses('AppModel', 'Model');
class Search extends AppModel {
    public $actsAs = array('Search.Searchable');
    public $useTable = false;
    public $filterArgs = array(
        'terminada' => array(
            'type' => 'like',
            'field' => array(
                'Sludge.terminada',
                'SurfacesWater.terminada',
                'ResidualWater.termianda',
                'UndergroundWater.terminada',
                'PotableWater.terminada',
                'SpecifiedsResidualsWater.terminada'
            )
        ),
        'revisada' => array(
            'type' => 'like',
            'field' => array(
                'Sludge.revisada',
                'SurfacesWater.revisada',
                'ResidualWater.revisada',
                'UndergroundWater.revisada',
                'PotableWater.revisada',
                'SpecifiedsResidualsWater.revisada'
            )
        ),
        'eliminada' => array(
            'type' => 'like',
            'field' => array(
                'Sludge.eliminada',
                'SurfacesWater.eliminada',
                'ResidualWater.eliminada',
                'UndergroundWater.eliminada',
                'PotableWater.eliminada',
                'SpecifiedsResidualsWater.eliminada'
            )
        ),
    );
    public function orConditionsDates($data = array()) {
        $start = date('Y-m-d');
        $end = date('Y-m-d', strtotime('-1 month'));
        $cond = array(
            'OR' => array(
                $this->alias . '.monitoreofecha LIKE <=' => $end,
                $this->alias . '.monitoreofecha LIKE >=' => $start,
                ));

        return $cond;
    }
}

コントローラ:

App::uses('AppController', 'Controller');
class SearchesController extends AppController {
    public $components = array('Search.Prg');
    public $presetVars = true; // using the model configuration
    public function index() {
        $this->Prg->commonProcess();
        $this->paginate['conditions'] = $this->Search->parseCriteria($this->passedArgs);
        $this->set('searches', $this->paginate());
    }
}

ビューは、ベイクで作成したインデックスと同じです。私の間違いは何ですか? 全てに感謝!!

S.

4

2 に答える 2

1

この方法で行う場合は、コントローラーで最初にpaginateを宣言する必要があります。

public $paginate = array();

または、メソッドで直接初期化します

 $this->paginate = array();
于 2012-09-25T08:58:48.030 に答える
0

次のようにしてみてください。App::uses('AppController'、'Controller');

class SearchesController extends AppController {
  public $components = array('Search.Prg');

  public $presetVars = true; // using the model configuration    

  public $paginate = array();

  public function index() {

    $this->Prg->commonProcess();

    $cond = $this->Search->parseCriteria($this->passedArgs);

    $this->set('searches', $this->paginate('Search', $cond));
  }
}
于 2012-09-25T08:59:04.763 に答える