簡體   English   中英

該表格在symfony2中始終有效

[英]the form is always valid in symfony2

我有一個帶有此驗證的表格:

# ITW/UserBundle/Resources/config/validation.yml

ITW\UserBundle\Entity\User:
    properties:
        name:
            - NotBlank: ~
            - Length: { min: 800 }

我正在檢查這樣的表格:

// ITW/UserBundle/Controller/UserController.php

    $entity = new User();
    $form = $this->createForm(new UserType(), $entity);

    $form->handleRequest($request);

    if ($form->isValid()) {
        echo "valid!";
    }

config.yml ,驗證為:

validation:      { enabled: true }

但是,當我提交帶有空name字段的表單時, $form->isValid()始終返回True

我不知道怎么了!
我確定validation.yml正確加載(如當我使用無效的字段名symfony給出異常時)

問題出在哪兒?


Symfony版本為2.5.6 ,我也嘗試使用2.5.5
我也嘗試使用getters約束目標的字段name並得到相同的結果。


我的UserType是:

namespace ITW\UserBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use ITW\UserBundle\Entity\User;

class UserType extends AbstractType
{
    public function __construct(){}

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
        ->add('name','text',array('required'  => true,'label'=>'name'))
        ->add('family','text',array('required'  => true,'label'=>'family'))
        ->add('tels','collection', array('required'  => false,'prototype'=>true,'type'=> 'text','allow_add'=>true,'delete_empty'=>true,'label'=>'Tel'))
        ->add('username','text',array('required'  => true,'label'=>'username'))
        ->add('password','password',array('required'  => true,'label'=>'password'));

    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'ITW\UserBundle\Entity\User'
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'itw_userbundle_user';
    }
}

只是為了澄清config.yml如果您尚未從config.yml文件中刪除節form ,則默認情況下啟用配置validation

framework:
    form: ~

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM