1

データベースにエンティティ データを挿入する必要があるときに問題が発生します。

エンティティは Symfony2 のエンティティ フィールドで表示され、クエリ ビルダーを使用して「アクティブ」なデータのみを表示しています。(下記参照)

Ajax を介して Symfony によって生成された「select」にデータを追加できます (アクティブではない新しい「profs」(is_active = 0))。しかし、Ajax を介して追加され、アクティブでないデータを選択すると、「この値は無効です」というエラーが表示されます。=> これは、Symfony2 がクエリビルダーの "where" ステートメントによる自動検証を追加するためです。

デフォルトの Symfony2 の動作をオーバーライドして、アクティブでない (is_active = 0 (ブール値)) -Ajax を介して追加された要素も検証できるようにすることは可能ですか?

$builder->add('professionA', 'genemu_jquerychosen_entity', array(
    'class' => 'SportUserBundle:Profession',
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('prof')
            ->where('prof.is_active = :active')
            ->setParameters(array('active' => '1'))
            ->orderBy('prof.name', 'ASC');
    },
));

ありがとう!

4

1 に答える 1

0

最も簡単な方法は、最初にそのフィールドにすべての可能な要素を登録することです。つまり、データベースからすべての職業データを取得し、ドキュメントの準備ができてアクティブな状態が変更されたときに、ajaxを使用してフィールドコンテンツを再作成または制限します。

'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('prof')->orderBy('prof.name', 'ASC');
}

私が推測する非常に優れた解決策ではありませんが、それは単に機能します。:)

于 2012-12-28T14:18:49.983 に答える