私はSymfonyアプリケーションを構築していて、いくつかのjquery/ajaxでフォームイベントを使用して "状態/地域"の全体を処理しています。私は少し問題がありますが、私は州 - >市 - >郊外の形式を使用しています。明らかにイベントリスナーをイベントリスナーによって追加されたフォーム要素に追加する
The child with the name "physicalCity" does not exist.
この:今、私の知る限り、私のコードは大丈夫ですが、実行は、私は「市」にリスナーを追加するセクションに当たると選択し、それは次のように言ってエラーをスローします新しく作成されたフィールドにイベントリスナーを追加しようとすると、イベントリスナーによって作成された要素にイベントリスナーが追加されます。
コードのセクションが下にあります...私は間違っていますか?どんな助けも非常に高く評価されるでしょう!誰が同様の問題がある場合は
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('schoolName')
->add('physicalProvince', 'entity', array(
'mapped' => false,
'class' => 'MY\MainBundle\Entity\Province',
'empty_value' => 'Select a province',
'attr' => array(
'class' => 'province',
'data-show' => 'physical-city',
)
));
/*
* For the physical cities
*/
$physicalCityModifier = function(FormInterface $form, Province $province = null) {
if (null !== $province)
$cities = $province->getCities();
else
$cities = array();
$form->add('physicalCity', 'entity', array(
'mapped' => false,
'class' => 'MY\MainBundle\Entity\City',
'empty_value' => 'Select a province first',
'choices' => $cities,
'attr' => array(
'class' => 'city physical-city',
'data-show' => 'physical-suburb'
)
));
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function(FormEvent $event) use ($physicalCityModifier) {
$data = $event->getData();
if (is_object($data->getPhysicalSuburb()))
$province = $data->getPhysicalSuburb()->getCity()->getProvince();
else
$province = null;
$physicalCityModifier($event->getForm(), $province);
}
);
$builder->get('physicalProvince')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($physicalCityModifier) {
$province = $event->getForm()->getData();
$physicalCityModifier($event->getForm()->getParent(), $province);
}
);
/*
* For the physical suburbs
*/
$physicalSuburbModifier = function(FormInterface $form, City $city = null) {
if (null !== $city)
$suburbs = $city->getSuburbs();
else
$suburbs = array();
$form->add('physicalSuburb', null, array(
'choices' => $suburbs,
'empty_value' => 'Select a city first',
'attr' => array(
'class' => 'physical-suburb'
),
));
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function(FormEvent $event) use ($physicalSuburbModifier) {
$data = $event->getData();
if (is_object($data->getCity()))
$city = $data->getCity();
else
$city = null;
$physicalSuburbModifier($event->getForm(), $city);
}
);
$builder->get('physicalCity')->addEventListener(
FormEvents::POST_SUBMIT,
function(FormEvent $event) use ($physicalSuburbModifier) {
$city = $event->getForm()->getData();
$physicalSuburbModifier($event->getForm()->getParent(), $city);
}
);
}
素晴らしい作品!あなたは私の日を救った、ありがとう! :) – Gianluca78
このコンテンツも編集している間、これは機能しますか?私にとってはそうではありませんでした。 Symfonyのどのバージョンを返信してもらえましたか? – Jeet
はい、それは私のために働いた。これはSf 2.4だったと思いますが、正確に覚えていません。クエリビルダーの決定事例を試してみてください。おそらくあなたの事件には奇妙なことがあるかもしれません。そしてXDebugをインストールしてください!多くの助けになります。 – iLikeBreakfast