2

typeから継承する再利用可能な(ここでは簡略化された)カスタムフィールドタイプがあり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',
            ))
        ;
    }
}
4

1 に答える 1

3

これはSymfony2.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 に答える