使用 ajax 提交扩展的 EntityType 字段
Submit expanded EntityType Field with ajax
我已经使用这个 answer 为实体列表创建了一个表单,每行都有一个复选框:
表格
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('sites', EntityType::class, [
'required' => false,
'class' => Site::class,
'choice_label' => function($site){
return '['.$site->getId().']';
},
'multiple' => true,
'expanded' => true
]);
}
树枝:
{% for site in sites %}
<tr>
<td>{{ form_widget(actionform.sites[site.getId]) }}</td>
但是我无法正确提交 ajax:
目前我正在使用:
$.post(
'{{ path('site_add_to_upgrade', { 'page': page } ) }}',
{
'site_action_form[_token]': '{{ actionform._token.vars.value }}',
'site_action_form[sites]': $('.itemlist input[name^="site_action_form"]:checked').serialize()
}
)
但这会引发错误:
\Symfony\component\Form\FormError
message: This value is not valid
messageParameters:
{{ value }}: site_action_form%5Bsites%5D%5B%5D=4
我如何提交这些复选框,以便我可以遍历它们?
我会将工作分为两部分:
1 - 确保表单在同步发送时有效。
2 - 按原样发送您的表格 ajax :
$(this).on('submit', '#wrapper_id > form', function(event){
event.preventDefault();
var form = $(this);
var url = form.attr('action');
var data = form.serialize();
$.post(url, data, function(data) {
//process with return data
});
});
根据记录,这更像是一个 jQuery 问题,而不是一个 symfony 或 ajax 问题。
希望对您有所帮助
我已经使用这个 answer 为实体列表创建了一个表单,每行都有一个复选框:
表格
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('sites', EntityType::class, [
'required' => false,
'class' => Site::class,
'choice_label' => function($site){
return '['.$site->getId().']';
},
'multiple' => true,
'expanded' => true
]);
}
树枝:
{% for site in sites %}
<tr>
<td>{{ form_widget(actionform.sites[site.getId]) }}</td>
但是我无法正确提交 ajax:
目前我正在使用:
$.post(
'{{ path('site_add_to_upgrade', { 'page': page } ) }}',
{
'site_action_form[_token]': '{{ actionform._token.vars.value }}',
'site_action_form[sites]': $('.itemlist input[name^="site_action_form"]:checked').serialize()
}
)
但这会引发错误:
\Symfony\component\Form\FormError
message: This value is not valid
messageParameters:
{{ value }}: site_action_form%5Bsites%5D%5B%5D=4
我如何提交这些复选框,以便我可以遍历它们?
我会将工作分为两部分: 1 - 确保表单在同步发送时有效。 2 - 按原样发送您的表格 ajax :
$(this).on('submit', '#wrapper_id > form', function(event){
event.preventDefault();
var form = $(this);
var url = form.attr('action');
var data = form.serialize();
$.post(url, data, function(data) {
//process with return data
});
});
根据记录,这更像是一个 jQuery 问题,而不是一个 symfony 或 ajax 问题。
希望对您有所帮助