注文の多いXOOPS屋 TOP現在のブログ旧スタッフblog アーカイブ
このページは 2007〜2008 年に公開していた「株式会社RYUS スタッフblog」のアーカイブです。内容は当時のものです。

一覧画面に検索フォームをつける

2007/06/30 15:20   Ryuji   カテゴリ: cubson

昨日はうっかり BLOG を更新するのを忘れてしまいました(..;)

さて、仕事でモジュール開発をしていると、データの一覧画面に検索フォームをつけてほしいという要望がよくあります。

そこで FilterForm に検索条件を保持させるために cubson が生成した AbstractFilterForm に次のようなコード追加しています。

PRE var $params = array();
function get($key){
return $this->params[$key];
}
function set($key, $value)
{
$this->params[$key] = $value;
}/PRE

各 テーブルの FilterForm の fetch を、値が保持できるように criteria に条件を追加する部分に、$this->set(検索キー , 値) を追加していきます。

ListAction も、FilterForm を render に渡すように executeViewIndex に1行追加します。

$render->setAttribute('filter', $this->mFilter);/PRE

テンプレートの検索フォームは下記のように書いていきます。

<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>/PRE

実際には完全一致だけでなく、範囲検索したり、キーワード検索することがあるので、criteria 追加部分はかなりいじることになりますが、基本はこのような感じで一覧画面に検索フォームをくわえることができます。