sfWidgetFormSelectを利用した場合のFormFilterの設定
generate-adminで作成したフォームで値を選択させる場合は、sfWidgetFormSelectを利用する。
class HogeFormFilter extends BaseHogeFormFilter { public function configure() { $this->setWidget( 'enable', new sfWidgetFormSelect( array('choices' => array( '' => '', 't' => 'enable', 'f' => 'disable' )) ) ); }
ただし、このままだとフォームフィルタを利用した絞込みがうまくいかない。
この原因は、絞込みに利用されるCriteriaを生成する際にaddTextCriteriaメソッドが利用されるため。
このメソッドは、値が配列かつtextというキーが存在することが前提になっているが、sfWidgetFormSelectではそんなことをしてくれない。
このため、値がカラとみなされCriteriaに条件が指定されない。
対処としては、BaseHogeFormFilterでBooleanとすることで、値がそのまま利用される。
public function getFields() { return array( 'id' => 'Number', 'enable' => 'Boolean', 'comment' => 'Text', ); }