2012-05-28 2 views
3

Когда я отправляю форму, текстовое поле, содержащее дату, не проверяется, хотя я определил ограничение в сущности. Что неверно? Нужно ли писать персонализированный валидатор даты для текстового поля, содержащего дату?Symfony2 форма - дата проверки поля не работает

В моем классе формы у меня есть

public function buildForm(FormBuilder $builder, array $options) 
{ 
    $builder 
      ->add('added', 'date', array(
       'required' => false, 
       'widget' => 'single_text', 
       'format' => 'yyyy-MM-dd', 
       'attr' => array(
        'class' => 'datepicker' 
       ) 
      )) 
} 

В сущности

/** 
* @var date 
* 
* @Assert\Date(message = "test") 
* @ORM\Column(name="added", type="date", nullable=true) 
*/ 
private $added; 

И контроллер (Мне нужны эти ошибки, перечисленные)

$request = $this->getRequest(); 
    $r = $this->getProfileRepository(); 
    $profile = $id ? $r->find($id) : new \Alden\XyzBundle\Entity\Profile(); 
    /* @var $profile \Alden\XyzBundle\Entity\Profile */ 
    $form = $this->createForm(new ProfileType(), $profile); 
    if ($request->getMethod() == 'POST') 
    { 
     $form->bindRequest($request); 
     $errors = $this->get('validator')->validate($profile); 
     foreach ($errors as $e) 
     { 
      /* @var $e \Symfony\Component\Validator\ConstraintViolation */ 
      $errors2[$e->getPropertyPath()] = $e->getMessage(); 
     } 
     if (count($errors2)) 
     { 
     ... 
     } else { 
      $em = $this->getEntityManager(); 
      $em->persist($profile); 
      $em->flush(); 
     } 
+0

Откуда возникает '$ errors2', когда valudation присваивается' $ errors'. Это опечатка? –

+0

Я не копировал весь код и, видимо, слишком много перерезал. Я добавил недостающие строки. – koral

+0

Есть ли что-то еще? Вы привязываете форму $ request к $ form, а затем проверяете $ profile. Предположительно, вы делаете что-то вроде $ profile-> setAdded ($ form-> getData() -> getAdded()) где-то? – redbirdo

ответ

1

Вам может понадобиться обновить конфигурацию , Согласно Validation части книги Symfony2:

Symfony2 валидатор включена по умолчанию, но вы должны явно включить аннотации, если вы используете метод аннотаций, чтобы указать свои ограничения:

Для пример:

# app/config/config.yml 
framework: 
    validation: { enable_annotations: true } 
+0

Существуют и другие поля (например, firstName), которые подтверждены правильными (как не пустые и минимальные длины = 3) – koral