2011-01-13 6 views
0

私はgenerator.ymlで実行中のモジュールの範囲を持っています。それらの中には、デフォルトでStatus:CLOSED(ステータスの範囲の最後)レコードを非表示にしたいと思っています。もちろん、ユーザーがCLOSEDのフィルターをかけている場合は、これらのレコードを表示したいと思う。フィールドがフィルタリングされていない場合にモデルにクエリを適用する方法

特定のtable_methodでandWhere( 'status_id =?'、Status :: CLOSED)を適用することは理にかなっていますが、モデル内からモジュールのフィルタにアクセスするにはどうすればよいですか?

これを行うより良い方法はありますか?

答えて

0

私はあなたができると思う:あなたは、クエリが与えられたフィールドのために構成されている方法を調整のlib /フィルター/教義に関連するフィルタフォームを見つけ、そこにこのような方法を追加したい場合は

例えば、新しいフィールドを作成する

パブリック関数getFilterDefaultsとgeneratorconfigurationの 'showClosedStatus'(フォームでウィジェットとバリデータを追加する必要があるでしょう) その後、getFilterDefaultsを追加()(){
リターン・アレー( 'showClosedStatus' => 'false' を);
}

その後、 関数addShowClosedStatusColumnQuery(Doctrine_Queryの$ Q、$フィールド、$値){
場合($値== false)を{
$ q-で> andWhere( 'ステータスを!=閉じ' を追加)
}

+0

これを回避策として使用します - デフォルトがtrueの場合のみ動作します。それ以外の場合はaddShowClosedStatusCOlumnQueryに達しません。私はそれが単一のフィールドで動作することを好むだろうが、これは今のところ十分です – jdog

0

あなたは何をしたいのですか?それはフィルタの1つの状態をデフォルトにしていますか?

もしそうなら、それはかなり簡単に行われます。アプリケーション//モジュール// libに/ GeneratorConfiguration.php「getFilterDefaults」と呼ばれるクラスにメソッドを追加します。あなたのための

class modulenameGeneratorConfiguration extends BaseModulenameGeneratorConfiguration 
{ 
    public function getFilterDefaults() { 
    return array('status' => 'something'); 
    } 

} 

唯一の違いは、あなたがフィールドの値の配列内にフィルタリングすることができますように聞こえるということです質問。これを試してみることは決してありませんでしたが、何かの代わりに値の配列を返すことが、それを行う方法になると思います。

+0

いいえ、私は、クエリを適用する必要があります!=フィルタを閉じ、選択したフィルタは= – jdog

0

OPからのコメントに基づいて、代わりの答え。

public function addStatusColumnQuery(Doctrine_Query $q, $field, $value) { 
    // do whatever you want here - ie: check $value, and add the query conditions you need to $q. 

    return $q; 
} 
+0

はフィルタなしが選択されていない場合、問題は、この関数が呼び出されていないが、私が欲しいものに非常に近くに見える閉じられていない限り - 私はまだそれをフィルタリングする必要があります。私が見ることができる流れのドキュメント? – jdog

+0

私はこのhttp://www.symfony-project.org/tutorial/1_4/en/whats-new#chapter_a2fae23c9403b0e9ec99806fccf6b53e_sub_sfformfilterdoctrineも見つけましたが、フィルタシードをどこに置くべきかは不明です。 table_methodを変更すると同じ問題が残る – jdog

関連する問題