CakePHP で GET フォームを作る入門
ビューへ GET を設定する
<?php echo $form->create('ModelName', array( 'type' => 'GET', 'action' => 'mobile_index')); ?>
モデルの検索項目は別フィールドを用意してバリデーションを緩くする
<?php class ModelName extends AppModel{ var $order = 'ModelName.id'; var $validate = array( 'field_name' => array( // 登録項目のバリデーション。 ), 'condition_field_name' => array( // 検索項目のバリデーション。 ), ); } ?>
コントローラの submit 判定
GET 時の submit 判定は if(empty($this->data)){ でできないので注意。
<?php class SomeController extends AppController { function index(){ if(empty($this->data)){ // この方法はダメ。 return; } } } ?>
GET 時の submit 判定は if(! isset($this->params['url']['param_name'])){ で行う。
<?php class SomeController extends AppController { function index(){ if(! isset($this->params['url']['condition_field_name'])){ return; } } } ?>
コントローラの submit 後の再表示
画面項目を再表示するため、$this->data['ModelName']['param_name'] を設定しておく。
<?php class SomeController extends AppController { function index(){ if(! isset($this->params['url']['condition_field_name'])){ return; } $this->data['ModelName']['condition_field_name'] = $this->params['url']['condition_field_name']; $models = $this->ModelName->find('all'); } } ?>