2014-01-13 4 views
2

У меня проблема с формой проверки в Symfony2:

часть класса формы:

class CompanyType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options){ 
     $builder 
      ->add('name', 'text',array("label"=> "Nazwa",'max_length' => 255, 'required'=>true)) 
      ->add('url', 'url',array("label"=> "Adres strony",'max_length' => 255, 'required'=>true)) 
      ->add('logo', 'file',array("label"=> "Logo",'max_length' => 255)) 
      ->add('Dodaj', 'submit'); 
    } 
    public function setDefaultOptions(OptionsResolverInterface $resolver){ 
     $resolver->setDefaults(array(
      'data_class' => 'Diliges\DiligesBundle\Entity\Company', 
      'error_bubbling' => true 
     )); 
    } 
} 

части метода контроллера:

public function addAction(Request $request){ 
     $company = new Company(); 
     $form = $this->createForm(new CompanyType(), $company); 
     $form->handleRequest($request); 

     if ($form->isValid()) { 

      try{ 
       $company->setActive(false); 
       return $this->redirect($this->generateUrl('add_company_thx')); 
      }catch(PDOException $e){ 

      } 

     } 
     ... 

предприятие компании

properties: 
     name: 
      - NotBlank: ~ 
      - MinLength: 3 
     url: 
      - NotBlank: ~ 

Im пытается, и пытается, и все еще $ form-> isValid() всегда возвращает true. Даже когда я отправляю пустую форму.

ответ

4

У вас возникли проблемы с настройкой валидации. Посмотрите на документы, для которых размещена конфигурация yml. Basics of Validation

Они помещают файл конфигурации в src/Acme/BlogBundle/Resources/config/validation.yml. Кроме того, ваш формат конфигурации неверен. Вам не хватает определения сущности.

Diliges\DiligesBundle\Entity\Company: 
    properties: 
     name: 
      - NotBlank: ~ 
      - MinLength: 3 
     url: 
      - NotBlank: ~ 

Другой вариант, который может привести к тому, что это не сработает, - это если вы включили другой вид проверки (например, аннотации). Убедитесь, что yml включен

+1

Nice! Спасибо, это работает! в app/confi/config.yml у меня была 'validation: {enable_annotations: true}' и должна быть 'validation: {enabled: true}'. – unbreak

+0

@unbreak: то, что вы сделали, просто отключит аннотации, как в [doc] (http://symfony.com/doc/current/reference/configuration/framework.html#validation), и это может означать, что у вас есть проблема в ваших аннотациях. – SlimIT

Смежные вопросы