私は、チェックボックスを使用してエンティティタイプをフィルタするフォームを持っています。フォームが最初にレンダリングされると、チェックボックスはオフになります(false)。私がそれをチェックすると、正しくAJAXが起動し、エンティティが正しいサブセットで更新されます。Symfony3動的フォームのチェックボックス
ただし、チェックボックスをオフにすると、新しいエンティティが残ります。
コードを実行中に、AJAXリクエストがフォームに適切なtrue/falseを返すことを確認しました(プロファイラのPOSTパラメータは送信したものと同じです)。
すべてが横向きになっている場合は、POST_SUBMITリスナーにあります。これを記録することにより、$ event-> getForm() - > getData()は常に "1"または真です。 docsによれば、これは現在フォームを表すデータである必要があります。
私のフォーム上で定義されているチェックボックス:
$builder->add('businessAcct', CheckboxType::class, array(
'required' => false,
'label' => ' ',
'label_attr' => array(
'class' => 'middle',
),
)) ...
マイリスナー:完全性について
$builder->get('businessAcct')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($planModifier) {
$business = $event->getForm()->getData();
$this->log->info($event->getForm()->getData()); // always produces 1 in profiler
$planModifier($event->getForm()->getParent(), $business);
}
);
マイ$ planModifier ...
$planModifier = function (FormInterface $form, bool $business) {
if ($business) {
$plans = $this->em->getRepository('AppBundle:Plan')->findAllBusinessPlans();
$placeholder = '- select business plan -';
} else {
$plans = $this->em->getRepository('AppBundle:Plan')->findAllResidentialPlans();
$placeholder = '- select residential plan -';
}
$form->add('plan', EntityType::class, array(
'class' => 'AppBundle:Plan',
'choice_label' => 'description',
'placeholder' => $placeholder,
'choices' => $plans,
'label' => 'Plan:',
'label_attr' => array(
'class' => 'text-right middle',
),
));
};
AJAXコード:
var $bus_acct = $('#businessAcct');
$bus_acct.click(function() {
var $form = $(this).closest('form');
var data = {};
data[$bus_acct.attr('name')] = $bus_acct.is(':checked');
$.ajax({
url : $form.attr('action'),
type: $form.attr('method'),
data : data,
success: function(html) {
$('#plan').replaceWith(
$(html).find('#plan')
);
}
});
});
私は$ event-> getData()を試してみましたが、もちろん、それもうまくいきませんでした。
私はこのフォームに他のダイナミックフィールドを持っていますが、それらは問題なく動作します。
なぜ、$イベント - > getForm() - > getData()のアイデアは、常に '1'で、私のbusinessAcctチェックボックスには従っていませんか?
ダンを使用して終了...私は十分な検索をしなかったと思います。明らかに、これは既知の問題です。 [https://github.com/symfony/symfony/issues/7139](https://github.com/symfony/symfony/issues/7139) – profm2