一覧画面に検索フォームをつける
昨日はうっかり BLOG を更新するのを忘れてしまいました(..;)
さて、仕事でモジュール開発をしていると、データの一覧画面に検索フォームをつけてほしいという要望がよくあります。
そこで FilterForm に検索条件を保持させるために cubson が生成した AbstractFilterForm に次のようなコード追加しています。
var $params = array();
function get($key){
return $this->params[$key];
}
function set($key, $value)
{
$this->params[$key] = $value;
}
各 テーブルの FilterForm の fetch を、値が保持できるように criteria に条件を追加する部分に、$this->set(検索キー , 値) を追加していきます。
ListAction も、FilterForm を render に渡すように executeViewIndex に1行追加します。
$render->setAttribute('filter', $this->mFilter);
テンプレートの検索フォームは下記のように書いていきます。
<form action="index.php" method="GET">
<{xoops_input type=hidden name=action value=HogeList}>
Foo ID : <{xoops_input type=text name=foo_id value=$filter->get('foo_id')}>
開始日 : <{xoops_input type=text name=start_date value=$filter->get('start_date')}>
<input type="submit" value=" 検索 " />
</form>
実際には完全一致だけでなく、範囲検索したり、キーワード検索することがあるので、criteria 追加部分はかなりいじることになりますが、基本はこのような感じで一覧画面に検索フォームをくわえることができます。