帐户邀请表
我想为指定的用户加载帐户:
Invitor: [_Select User _______X]
Account: [_Select Account_____X]
试图实施Dynamic Generation for Submitted Forms但没有成功。更改用户下拉菜单和帐户下拉列表仍为空。
Account --------{OneToMany}------- UserAccount --------{ManyToOne}-------- User
Account --------{OneToMany}------- AccountInvitation
AccountInvitationType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', LimitedEmailType::class, array(
'label' => false,
))
->add('invitedBy', InvitorType::class);
$formModifier = function(FormInterface $form, User $user = null) {
$accounts = null === $user ? array() : $user->getAccounts();
$form
->add('account', EntityType::class, array(
'label' => false,
'class' => Account::class,
'choice_label' => 'title',
'choice_value' => 'id',
'choices' => $accounts,
));
};
$builder->addEventListener(FormEvents::PRE_SET_DATA,
function(FormEvent $event) use ($formModifier) {
$formModifier($event->getForm(), $event->getData()->getInvitedBy());
});
$builder->get('invitedBy')->addEventListener(FormEvents::POST_SUBMIT,
function(FormEvent $event) use ($formModifier) {
$event->stopPropagation();
$formModifier($event->getForm()->getParent(), $event->getForm()->getData());
}, 900);
}
AJAX调用没问题,但是响应中的表单中没有$accounts
。
使用 Xdebug & PhpStorm ,$accounts
包含有效数组,但似乎account
字段未填充并添加到表单中。
问题
为什么在更改用户下拉列表后,account
表单字段不会填充?
AJAX电话:
var $invitedBy = $('#accountinvitation_invitedBy');
$invitedBy.change(function() {
var $form = $(this).closest('form');
var data = {};
data[$invitedBy.attr('name')] = $invitedBy.val();
$.ajax({
url : $form.attr('action'),
type: $form.attr('method'),
data : data,
success: function(html) {
var replace = $(html).find('#accountinvitation_account');
$('#accountinvitation_account').replaceWith(replace);
},
});
});