我有一个验证表单的控制器代码(我将它用于ajax请求)。问题是:当我提交错误的数据时,我没有任何错误,正如您在输出下面看到的:
$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));
}
});array(4) {
["Nombre"]=>
string(8) "fasdfasd"
["Email"]=>
string(5) "fasdf"
["Telefono"]=>
string(7) "9999999"
["Texto"]=>
string(7) "fasdfas"
}
array(0) {
}
jfklas发布于 2013-08-08 16:51:50
$form->getErrors()返回的只是表单本身的错误,而不是子字段中的错误。如果指定字段(例如使用$form['Telefono']->getErrors()或使用$form->getErrorsAsString() ),则可以获得错误。
发布于 2013-08-09 13:20:55
如果要使用getErrors,需要将error_bubbling添加到窗体项中。
->add('Nombre', 'text', array(
'error_bubbling' => true, 'constraints' => new Assert\NotBlank(array('message' => 'El campo Nombre es obligatorio'))
))https://stackoverflow.com/questions/18131235
复制相似问题