我有一个可重用(此处简化)的自定义字段类型,它继承自textarea
类型。默认情况下,内容不能为空,因此我将validation_constraint
指定为默认选项:
namespace Acme\HelloBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Validator\Constraints\NotBlank;
class SmsContentType extends AbstractType
{
public function getDefaultOptions(array $options)
{
return $options + array(
'label' => 'Testo *',
'validation_constraint' => new NotBlank()
);
}
public function getParent(array $options) { return 'textarea'; }
public function getName() { return 'sms_content'; }
}
但是将内容留空不会显示任何错误。不靠近字段本身而不是使用form_errors(form)
的冒泡错误。
我哪里错了?哦,我在另一种形式中使用这种自定义类型:
class UserType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('sms_birthday_template', new SmsContentType(), array(
'label' => 'SMS compleanno',
))
;
}
}
答案 0 :(得分:3)
这是Symfony 2.0的限制。 “validation_constraint”选项仅适用于根表单。
在Symfony 2.1中,“validation_constraint”被重命名为“constraints”并完全符合您的要求:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'label' => 'Testo *',
'constraints' => new NotBlank()
));
}