2011-12-14 3 views
0

私のフィルタでは、フィールドの動作は、フィールド値がフィールドequalの値を持つ行をDBテーブルで検索することですフィルタリング形式で私はDBテーブル内の行/行のフィールド値が一致するフォーム(%LIKE%)を検索するようにその動作を変更したいと思います。symfonyフィルタの動作が[field = value]から[field LIKE%value%]に変更されました

addFieldnameColumnQueryメソッドをフィルタークラスに追加することで実現できますが、私が知りたいことは別の方法ですか?

このフィールドは外部キーであるため、通常のテキストフィールドのように動作します。

更新日:これはばかげた間違いでした。私はsfWidgetFormFilterInputをwidgetSchemaに割り当てる必要がありましたが、sfWidgetFormInputを使用していましたが、これはマッチングの代わりに等価を探すことになりました。

答えて

1

私はどのようにこのシステムが動作し、どのようにあなたがのためだけのフィルタ動作を変更するには、あなたのaddFieldnameColumnQuery

UPDATE を書くことができますを理解することがlib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\formに位置sfFormFilterDoctrineクラスを見て...別の方法について聞いたことがありません

:あなたは、単にウィジェットを設定すると、このようないくつかのコードで MymoduleFormFilterクラスで getFields()をオーバーライドすることができ、通常の テキストから 外部キーからフィールド、 myfieldを言って、代わりに
public function configure() 
    { 
     $this->setWidget('myfield', new sfWidgetFormFilterInput()); 
     $this->setValidator('myfield', new sfValidatorPass(array('required' => false))); 
    } 

    public function getFields() 
    { 
     $fields = parent::getFields(); 
     $fields['myfield'] = 'Text'; 
     return $fields; 
    } 

あなたがにgenerator.yml

filter: 
    display: [... some fields ..., myfield] 

に書いたフィールド名に応じてウィジェットを設定し、最終的に内でaddMyfieldColumnQuery(Doctrine_Query $query, $field, $values)を追加するために、まだあなたが持っている結合テーブルで検索するフィールドを定義する場合には、コードが入ります。私がPropelを使用しているため、申し訳ありません。

+0

これは既に私が行ってきたことですが、このように、3行のコードを書く必要がありました。代わりに、generator.ymlを1か所で変更できます。 – prongs

関連する問題