Symfony 2没有验证集合表单类型中的实体?

时间:2013-09-12 18:46:06

标签: symfony symfony-2.1 symfony-forms

我的表单使用uploads集合类型。该集合的每个元素都是UploadType

class MultiUploadType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('uploads', 'collection', array(
            'type' => new UploadType(), // This should be validated
            'allow_add' => true,
        ));

        $builder->add('Save', 'submit');
    }
}

使用javascript我可以添加新的上传,但验证不起作用。我在这里阅读了很多问题(hereherehere),但我还没有找到解决方案。

这是上传类型的样子,而验证是使用YAML定义的,因为表单有一个类型Upload的相应实体(文件不能为空):

class UploadType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('file', 'file');
        $builder->add('description', 'textarea');
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'required' => false,
            'data_class' => 'App\Entity\Upload'
        ));
    }
}

验证码:

App\Entity\Upload:
  properties:
    file:
      - NotBlank:
          message: Occorre selezionare un file.
      - File: ~

1 个答案:

答案 0 :(得分:4)

来自评论讨论:

是的,基本上每个表单都应该有一个数据类。它不是一个实体,一个简单的模型类就足够了。所以你可以对它进行验证。要验证嵌入表单,Valid断言是必需的,对于集合,请使用traverse: true选项。