2

我有一个继承自textareatype 的可重用(此处为简化)自定义字段类型。默认情况下,内容不能为空,所以我指定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',
            ))
        ;
    }
}
4

1 回答 1

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()
    ));
}
于 2012-07-31T16:47:00.187 回答