1
symfonyのフォームビルダーでフィールド値を取得する方法。 私はフォームに2つのドロップダウンを持っています 私はページが開いているときにDropdown1に基づいてDropdown2で関連するオプションをします。私は静的に値を代入するとき、それは動作しますが、私は「leadSource」の値を取得し、それを割り当てたい -symfonyのフォームビルダーのフィールド値の取得方法
$builder->add('leadSource', 'entity', array(
'label' => 'How did you hear about C2? Source ',
'class' => 'C2EducateToolsBundle:LeadSources',
'query_builder' => function($repo) {
return $repo->createQueryBuilder('p')->orderBy('p.sort_order', 'ASC');
},
'property' => 'name',
'empty_value' => 'Select'
));
$leadSource = 1;
$leadSource = 1;
:ここ
は私のフォームは
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\Event\DataEvent;
use C2Educate\ToolsBundle\Entity\Students;
public function buildForm(FormBuilder $builder, array $options) {
フィールド1であります$leadSource
leadSourceを取得し、leadSourceSubクエリに渡したい
フィールド2:
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (DataEvent $event) {
$form = $event->getForm();
$entity = $event->getData();
$leadSource = $entity->getLeadSourceID();
$form->add('leadSourceSub', 'C2Educate\ToolsBundle\Entity\Students', array(
'label' => ' Source Detail ',
'required' => true,
'class' => 'C2EducateToolsBundle:LeadSourceSubs',
'query_builder' => function($repo) use ($leadSource) {
return $repo->createQueryBuilder('p')
->where('p.lead_source_id =:leadSource')
->setParameter('leadSource', $leadSource)
->orderBy('p.sort_order', 'ASC');
},
'property' => 'name',
'empty_value' => 'Select'
));
});
はい私は[送信されたフォームの動的生成]から同じことを試しました(https://symfony.com/doc/current/form/dynamic_form_modification.html#dynamic-generation-for-submitted-forms).i取得中Error'Catchable Fatal Error:C2Educate \ ToolsBundle \ Form \ Type \ StudentsType :: C2Educate \ ToolsBundle \ Form \ Type \ {closure}()は、C2Educate \ ToolsBundle \ Form \ Type \ FormEventのインスタンスでなければなりません。 C:\ xampp \ htdocs \ c2Education \ src \ C2Educate \ ToolsBundle \ Form \ Type \ StudentsType.php行121 \ – Developer
で指定されたSymfony \ Component \ Form \ Event \ DataEventのコードをコピーしただけで、名前空間をインポートするのを忘れた可能性があります。 'symfony \ Component \ Form \ FormEvent;を使用する' –
かなり古いSymfonyを持っているようですので、代わりに 'Symfony \ Component \ Form \ Event \ DataEvent'を使用し、代わりに' DateEvent' FormEventの –