私はcakephp2.1とcakedc検索プラグインを使用しています。
問題は、それを接着することができないということです。また得た:
Notice (8): Indirect modification of overloaded property ProjectsController::$paginate has no effect [APP\Controller\ProjectsController.php, line 48]
Cakedcチュートリアルに従いましたが、何かが足りません!単純な検索では、何もフィルタリングされません。
名前フィールドでフィルタリングしたい。
私のプロジェクトモデルについて
public $actsAs = array('Search.Searchable');
var $name = 'Project';
public $filterArgs = array(
array('name' => 'name', 'type' => 'like'),
array('name' => 'filter', 'type' => 'query', 'method' => 'orConditions'),
);
public function orConditions($data = array()) {
$filter = $data['filter'];
$cond = array(
'OR' => array(
$this->alias . '.name LIKE' => '%' . $filter . '%',
//$this->alias . '.body LIKE' => '%' . $filter . '%',
));
return $cond;
}
私のコントローラーで:
public $components = array('Search.Prg');
public $presetVars = array(
array('field' => 'name', 'type' => 'value')
);
index.ctpのみを使用するようにインデックス関数が更新されました(検索関数なし)
public function index() {
$this->Prg->commonProcess();
$this->Project->recursive = 0;
// next line causes
// Notice (8): Indirect modification of overloaded property ProjectsController::$paginate has no effect [APP\Controller\ProjectsController.php, line 48]
//$this->paginate['conditions'] = $this->Project->parseCriteria($this->passedArgs);
$this->set('projects', $this->paginate());
}
view.ctpに検索フォームを追加しました
echo $this->Form->create('Project', array('url' => array_merge(array('action' => 'index'), $this->params['pass'])));
echo $this->Form->input('name', array('div' => false));
echo $this->Form->submit(__('Search', true), array('div' => false));
echo $this->Form->end();
これは私の側の明らかな誤りであるに違いないことを私は知っています、私に耐えてください。誰か助けてもらえますか?
どうもありがとう !