我正在尝试在两个选择列表上做一个动态表单,并且我试图遵循有关SYmfony的文档: http://symfony.com/doc/current/form/dynamic_form_modification.html#dynamic-generation-for-submitted-forms 但是正在使用两个实体,我必须使用选择列表 谁能帮我,这是我的用户:
$
builder
->add('at', ChoiceType::class, array(
'label' => ' ',
'choices' =>array(
"42consulting.fr" => "42consulting.fr",
"42consulting.lu" => "42consulting.lu",
"42mediatvcom.fr" => "42mediatvcom.fr",
"42consulting.ma" => "42consulting.ma",
"42consulting.nl" => "42consulting.nl",
),
'attr' => array(
'class' => 'form-control',
'placeholder' => 'service',
),
)
);
$formModifier = function (FormInterface $form, User $at= null) {
$services = null === $at ? array() :$at->getService();
$form->add('service', ChoiceType::class, array(
'label' => 'Service',
'choices' => array(
"42Consulting Paris" => "Saint-Mandé",
"42Consulting Lux" => "Luxembourg",
"42MediaTelecom" => "Issy-Les-Moulineaux",
"42Consulting Maroc" => "Casablanca"
),
'attr' => array(
'class' => 'form-control service',
'placeholder' => 'service',
),
)
);
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
$data = $event->getData();
$formModifier($event->getForm(), $data->getAt());
}
);
$builder->get('at')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$at = $event->getForm()->getData();
$formModifier($event->getForm()->getParent(), $at);
}
);
我得到的错误是:类型错误:传递给 BackBundle\Form\UserType::BackBundle\Form{closure}(( 的参数 2 必须是 BackBundle\Entity\User 的实例,给定字符串,在第 263 行的/home/work/Sites/backoffice-ad/src/BackBundle/Form/UserType.php 中调用(在此行上:$formModifier($event->getForm((->getParent((,$at(;)
在线
$formModifier = function (FormInterface $form, User $at= null) {
您的$at,如声明的那样,此参数必须是用户实体的实例。但是当你调用这个函数时,你传递了一个字符串:
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
$data = $event->getData();
$formModifier($event->getForm(), $data->getAt());
}
);
你试过吗:
$formModifier($event->getForm(), $data);
我不确定,但我认为这是调用 getAt(( 时的问题,此方法返回字符串。$data
变量可能是用户实体的实例。