首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表格:当我提交错误的数据时,我不会出错

问表格:当我提交错误的数据时,我不会出错
EN

Stack Overflow用户
提问于 2013-08-08 16:28:09
回答 2查看 147关注 0票数 0

我有一个验证表单的控制器代码(我将它用于ajax请求)。问题是:当我提交错误的数据时,我没有任何错误,正如您在输出下面看到的:

代码语言:javascript
复制
$app->post('/contacto', function (Request $request) use ($app) {


    $form = $app['form.factory']->createBuilder('form', $data)
        ->add('Nombre', 'text', array(
            'constraints' => new Assert\NotBlank(array('message' => 'El campo Nombre es obligatorio'))
        ))
        ->add('Email', 'text', array(
            'required' => false,
            'constraints' => new Assert\Email(array('message' => 'Has introducido un email no válido. Revísalo, por favor.')),
        ))
        ->add('Telefono', 'text', array(
            'label' => 'Teléfono',
            'constraints' => array(
                new Assert\Regex(array('pattern' => "/^(?:\d\s*){8}\d$/", 'message' => 'El teléfono debe tener 9 dígitos')),
                new Assert\NotBlank(array('message' => 'El campo Teléfono es obligatorio')),
            )))
            ->add('Texto', 'textarea', array(
                'constraints' => new Assert\NotBlank(array('message' => 'El campo Texto es obligatorio')),
                'attr' => array('cols' => '76', 'rows' => '8'),
            ))
            ->getForm();

    $post = $request->request->get('form');

    $form->bind($post);

    if ($form->isValid()) {
        $data = $form->getData();

         $app['mailer']->send($message);

        $my_array = array('Gracias, hemos recibido tu mensaje, te contactaremos lo antes posible');

        return new Response('true');
    } else {
        var_dump($form->getData());
        var_dump($form->getErrors());
        die("jfklas");
        return new Response(json_encode($form));
    }
});

代码语言:javascript
复制
array(4) {
  ["Nombre"]=>
  string(8) "fasdfasd"
  ["Email"]=>
  string(5) "fasdf"
  ["Telefono"]=>
  string(7) "9999999"
  ["Texto"]=>
  string(7) "fasdfas"
}
array(0) {
}
jfklas
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-08 16:51:50

$form->getErrors()返回的只是表单本身的错误,而不是子字段中的错误。如果指定字段(例如使用$form['Telefono']->getErrors()或使用$form->getErrorsAsString() ),则可以获得错误。

票数 2
EN

Stack Overflow用户

发布于 2013-08-09 13:20:55

如果要使用getErrors,需要将error_bubbling添加到窗体项中。

代码语言:javascript
复制
    ->add('Nombre', 'text', array(
        'error_bubbling' => true, 'constraints' => new Assert\NotBlank(array('message' => 'El campo Nombre es obligatorio'))
    ))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18131235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档