2013-08-08 4 views
0

У меня есть этот код контроллера, который проверяет форму (я использую ее для запросов ajax). Проблема: Я не получаю какие-либо ошибки, когда я отправить неправильные данные, как вы можете видеть в выходном belower:Форма: я не получаю ошибки, когда я отправляю неверные данные

$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 
+0

сделайте утверждают не заготовки работать? – Moylin

+0

попробуйте проверить выход функции '$ form-> getErrorsAsString()' –

ответ

2

$form->getErrors() возврат только возвращает ошибки самой формы, а не ошибки из дочерние поля. Вы можете получить ошибки, если указать поле, пример с $form['Telefono']->getErrors() или использованием $form->getErrorsAsString()

0

Если вы хотите использовать getErrors нужно добавить error_bubbling в форму элементов

->add('Nombre', 'text', array(
     'error_bubbling' => true, 'constraints' => new Assert\NotBlank(array('message' => 'El campo Nombre es obligatorio')) 
    )) 
Смежные вопросы