에서 항상 유효합니다양식 I이 유효성 검사 양식을 가지고 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
이 제대로로드되고 있습니다 (잘못된 필드 이름을 사용하면 심포니에서 예외가 발생합니다)
어디에서 문제가 발생합니까?
심포니 버전 나는 또한 2.5.5
나는 또한 필드 name
에 대한 getters
제약 목표로 노력하고 같은 결과를 얻었다과 노력 2.5.6
&입니다.
내 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';
}
}
[Symfony2 doc] (http://symfony.com/doc/current/book/validation.html#configuration)에 부합합니까? 'app/config/config.yml' 프레임 워크 섹션에서'validation : {enable_annotations : true}'? –
@AlexandreL. 아니요. '주석'을 사용하지 않으므로'validation.yml'을 사용하고 있습니다. 어쨌든'annotations'로 테스트 한 결과도 실패합니다. 제 질문의 마지막 3 행을 확인하십시오 – RYN
@Chausser : 2.5.6 버전 – RYN