【问题标题】:Symfony - Ajax form validation - Extra dataSymfony - Ajax 表单验证 - 额外数据
【发布时间】:2014-07-07 07:45:09
【问题描述】:

我需要通过 Ajax 调用从 Symfony 表单发送数据,其中包含控制器选项的额外数据。

我正在开发一个包含 Symfony 表单组件的自定义框架。

所以我尝试在我的 JS 中发送这样的值:

$.ajax
(
    {
        type: "POST",
        url: '/myUrl',
        data: 
        {
            'formData' : $(this).serialize(),
            'extraData' : {'test1' : 'test1', 'test2' : 'test2'}
        },
        success: function(result)
        {
            // do something
        }
    }
);

如何在控制器中获取表单数据以让组件正确理解它?此代码不起作用:

$formData = $this->getRequest()->request('formData');
$form->bind($formData);

谢谢。我希望我的问题足够清楚

编辑:我终于将数据集成到表单中的隐藏字段中。该表单没有声明任何 data_class,因为我们使用的 ORM 是一个真正自定义的。感谢您的回答

【问题讨论】:

  • 为什么不$form->bind($_POST['formData']);
  • 我通过使用请求正确获取数据。问题是表单没有经过验证......看起来它无法将表单的字段与请求中发送的字段相关联。

标签: php jquery ajax forms symfony


【解决方案1】:

【讨论】:

    【解决方案2】:

    如果您的表单有 data_class 选项,则不能直接使用 extra_values 绑定/处理请求。

    您的表单需要您已经在表单类型上定义的变量。

    像这样使用它:

    if($request->isXmlHttpRequest()) {
        $form->handleRequest($request);
    
        if($form->isValid()) {
            // To get extra data;
            $extra_data = $request->request->get('extraData');
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      相关资源
      最近更新 更多