6

解決できないこの問題に遭遇しました。

私のフォームの 1 つで、エンティティをフィルタリングする必要があります。

背景のビット:

フォームは、ワークフロー ステップに新しいタスクを追加するためのものです。選択できるタスクは、ユーザーがワークフローのどの段階にいるか、ワークフローに割り当てられている製品、およびそのワークフローを管理する会社によって異なります。

フィルタリング クエリを「query_builder」セクションに追加しようとしました。また、エンティティ リポジトリからのクエリ結果を配列の「choices」セクションに入れようとしました。

ただし、作業中のフィールドが無効であるというフォームが常に表示されます。最も不可解な部分は、'choices' フィールドがなくても、そのエンティティのすべてのレコードを取り込む場合、選択ボックスはまったく同じ (いくつかの余分なレコードがあります) - 名前とその方法のパターンです。書いた。そして、それはうまくいきます。そのため、何が起こっているのかまったくわかりません。

フォーム要素コード:

->add('instructionAction', 'entity', array(
            'label' => 'Action',
            'empty_value' => 'Select Action',
            'required' => true,
            'class' => 'ApplicationTrackpadCommonBundle:InstructionAction',
            'property' => 'description',
            'choices' => $this->instructionActionRepository->findAllForCaseInstruction( $options['caseInstructionId'] )
            )
)

クライアントの作業用であるため、投稿できるコードの量がわかりません。WHERE私が使用するクエリは、クエリを使用しない場合と同様に、ドロップダウン ボックスに適切にデータを入力しています。また、句なしですべてのエンティティを選択しても、同じ問題が発生します。

助けてくれてありがとう。

4

2 に答える 2

3

このようなもの:

->add('instructionAction', 'entity', array(
    'required' => true,
    'class' => 'ApplicationTrackpadCommonBundle:InstructionAction',
    'query_builder' => function(EntityRepository $er) use ($user) {
        return $er->createQueryBuilder('c')
            ->where('c.user = :user')
            ->setParameter('user', $user)
            ->orderBy('c.name', 'ASC');
 }))

を使用して変数を渡すことができますuse

于 2013-10-01T20:30:33.883 に答える