大佬教程收集整理的这篇文章主要介绍了Symfony 5.1 提交表单的动态生成 - 不显示,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我开始写这篇新帖子是因为尽管做了很多研究,但我还是被困住了。
我有三个实体。
员工 -> 多对一 -> RefSocIEty
员工 -> 多对一 -> RefSite
RefSocIEty -> OnToMany -> RefSite
RefSocIEty -> OnToMany -> 员工
RefSite -> OnToMany -> 员工
RefSite -> ManyToOne -> RefSocIEty
我正在使用 FormEvent 的 symfony 文档; https://symfony.com/doc/current/form/dynamic_form_modification.html#dynamic-generation-for-submitted-forms
我希望在我的员工表单中,当我选择一个社团时,它只向我提供与该社团相关的网站。
这是我已经完成的。我尝试了很多不同的方法。当我手动传递 SocIEtyID 时,它会识别它并向我显示所需的站点。
此外,我认为阻塞的不是 JavaScript 方面。你有什么想法吗?
class employeeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder,array $options)
{
$builder
->add('socIEte',EntityType::class,[
'class' => RefSocIEty::class,'placeholder' => 'Sélectionnez votre société','mapped' => false,])
;
$formModifIEr = function (FormInterface $form,?RefSocIEty $socIEty)
{
$sites = null === $socIEty ? [] : $socIEty->getSites();
$form->add('site',[
'class' => RefSite::class,'placeholder' => 'Sélectionnez votre site','choices' => $sites,]);
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,function (FormEvent $event) use ($formModifIEr)
{
$data = $event->getData();
$formModifIEr($event->getForm(),$data->getSocIEte());
}
);
$builder->get('socIEte')->addEventListener(
FormEvents::POST_submit,function (FormEvent $event) use ($formModifIEr)
{
$socIEty = $event->getForm()->getData();
$formModifIEr($event->getForm()->getParent(),$socIEty);
}
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => employee::class,]);
}
}
index.HTMl.twig
{{ form_start(employeeForm) }}
{{form_row(employeeForm.socIEtE) }}
{{form_row(employeeForm.sitE) }}
{{ form_end(employeeForm) }}
<script>
var $socIEty = $('#employee_socIEte');
$socIEty.change(function () {
var $employeeForm = $(this).closest('employeeForm');
var data = {};
data[$socIEty.attr('name')] = $socIEty.val();
//console.log(data)
$.AJAX({
url: $employeeForm.attr('action'),type: $employeeForm.attr('method'),data: data,success: function (HTML) {
//console.log(data)
$('#employee_site').replaceWith(
$(HTML).find('#employee_site')
);
}
});
});
</script>
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的Symfony 5.1 提交表单的动态生成 - 不显示全部内容,希望文章能够帮你解决Symfony 5.1 提交表单的动态生成 - 不显示所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。