2014-01-13 19 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: ~ 

我嘗試,並嘗試,仍然$ 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

不錯!謝謝,它的工作原理!在app/confi/config.yml中我有'validation:{enable_annotations:true}',應該是'validation:{enabled:true}'。 – unbreak

+0

@unbreak:你所做的只會在[文檔](http://symfony.com/doc/current/reference/configuration/framework.html#validation)中禁用註釋,這可能意味着你有問題在你的註釋中。 – SlimIT