私はフォームのDoctrine ORMを実装しているSymfony2 CRMに取り組んでいます。 CRMのフォームの1つは顧客の住所を作成するためのもので、ストリート、都市、郵便番号などのすべての標準テキストフィールドがありますが、国や郡のドロップダウンもあります。問題は、データベースからすべての郡を取得した場合、そのリストは膨大であり、年齢がかかるだけでなく、クライアントが郡を見つけることは非常に難しいことです。Doctrineで前回選択した値に基づいて選択フィールドに値を設定する方法は?
私が望むのは、まず国を選択してから郡のフィールドを選択した国に基づいて自動入力することです。しかし、私はDoctrineでこれをどうやって行うのか分かりません。ここで
は(ここでは、ゾーンは郡を意味していることに注目)フォームタイプの私buildForm
機能です:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('company' , 'text', array('required' => false));
$builder->add('firstname' , 'text', array('required' => true, 'label' => 'First name'));
$builder->add('lastname' , 'text', array('required' => true, 'label' => 'Last name'));
$builder->add('address1' , 'text');
$builder->add('address2' , 'text', array('required' => false));
$builder->add('city' , 'text');
$builder->add('country' , 'entity',
array(
'class' => 'AppBundle:Oc49Country',
'property' => 'name',
'empty_value' => 'Choose an option',
));
$builder->add('zone' , 'entity',
array(
'class' => 'AppBundle:Oc49Zone',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('z')
->orderBy('z.name', 'ASC');
},
'empty_value' => '-- Please select --',
'required' => true,
'label' => 'County/State'
));
$builder->add('postcode' , 'text');
$builder->add('save', 'submit', array(
'attr' => array(
'class' => 'btn btn-primary'
),
));
}
は、郡のリストをフィルタリングするために、クエリビルダに追加のパラメータを追加する方法はあります、 急いで?
私はこのようにする方法を知っています。私はこれまでにこのようなことを実装しましたが、私はDoctrineメソッドを使ってそれを行う方法を見つけようとしています。私は選択された国をチェックするためにリスナーを追加する方法があるのかどうか疑問に思っていましたが、私はそれをどうやってやるのか本当にわかりません... –
実際、考えてみると、再選択されるまで選択ボックスを無効にします。ありがとう –
私が見ている最も近いことは、これが近づいたことです:http://symfony.com/doc/current/form/dynamic_form_modification.html。オプション3を参照してください。私はこれがまさにあなたが望んでいるとは思わない。私は自分自身を試していないので、おそらく私は間違っています。 – ehymel