【发布时间】:2013-12-11 17:20:18
【问题描述】:
我发现,如果我没有登录,我对 textarea 的验证不起作用。如果是我,它工作正常。 这是我的 Comment.php 实体:
/**
* @ORM\Column(type="text")
* @Assert\NotBlank(
* message = "Message cannot be blank"
* )
* @Assert\Length(
* min = "3",
* minMessage = "Message must have 3 or more characters"
* )
*/
private $content;
在我的 CommentType.php
// ... namespace and uses
class CommentType extends AbstractType
{
private $user;
public function __construct($user) {
$this->user = $user;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\BlogBundle\Entity\Comment',
'csrf_protection' => true,
'validation_groups' => (is_null($this->user) ? 'not_logged' : 'Default'), // here I set validation group if user is logged or not
));
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->setAction($builder->getAction().'#submit-comment');
if(is_null($this->user)) {
$builder->add('author', 'text', array('label' => 'Autor'))
->add('email', 'text', array('label' => 'E-mail (will not show)'))
->add('content', 'textarea', array('label' => 'Text',))
->add('captcha', 'captcha', array('invalid_message' => 'Bad captcha', 'background_color' => array(255, 255, 255) ));
}
else {
$builder->add('content', 'textarea', array('label' => 'Text',));
}
$builder->add('save', 'submit', array('label' => 'submit'));
}
public function getName()
{
return 'comment';
}
}
正如我所写,如果我已登录,它可以正常工作(内容字段),但如果没有,所有字段都经过验证除了内容字段。
有什么想法吗?
【问题讨论】:
标签: php forms validation symfony