次のように、関連するモデル(ymlの外部関係で指定)から選択リストが入力されたUserFormクラスがあります。
$this->setWidget('report_id', new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('Report'))));
このリレーションからのレポートオブジェクトをレポートフィールドの1つ、「アクティブ」でフィルタリングして、active=1のレポートのみがフォームに表示されるようにします。
適切なクエリを実行し、フィルタリングされたレポートを返すメソッドReportTable :: GetActiveReports()があります。したがって、1つのオプションは、ウィジェットにその関数の結果を入力することです。それを行うための構文に関するヒントはありますか?
よりクリーンな方法は、UserFormFilterクラスを使用して、そこでactive=1でレポートをフィルタリングすることです。残念ながら、フォームフィルターの使用方法(または実際にはそれらが何であるか)に関するドキュメントが見つからなかったため、これは適切な解決策ではない可能性があります。フォームフィルターはこの仕事に適したツールですか?http://www.doctrine-project.org/api/orm/1.2/doctrine/doctrine_record_filter_standard.htmlで定義されているように、Doctrine_Record_Filter_Standardクラスを使用する必要がある ようですが、適切な使用法はわかりません。
どんなガイダンスも役に立ちます。ありがとう!ダン