Symfony2:$ form-> isValid()始终为true

时间:2014-01-13 18:47:26

标签: php forms symfony

我在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
        ));
    }
}

Controller方法的一部分:

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。即使我提交空表格。

1 个答案:

答案 0 :(得分:4)

您必须在错误的位置进行验证配置。查看yml配置所在的文档。 Basics of Validation

他们将配置文件放在src/Acme/BlogBundle/Resources/config/validation.yml中。此外,您的配置格式不正确。您缺少实体定义。

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

如果您启用了不同类型的验证(如注释),那么可能导致此操作失效的另一个选项。确保yml已启用