使用ajax

时间:2017-09-22 04:59:26

标签: php ajax symfony entity

我已使用此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
    ]);

}

Twig:

{% 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 个答案:

答案 0 :(得分:1)

我将工作分为两部分: 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。

希望这有帮助