1

我的表单使用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 我可以添加新的上传,但验证不起作用。我在这里(这里这里这里)阅读了很多问题,但我还找不到解决方案。

这是上传类型的样子,而验证是使用 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: ~
4

1 回答 1

4

来自评论讨论:

是的,基本上每个表单都应该有一个数据类。它不必是实体,一个简单的模型类就足够了。因此,您可以对其应用验证。要验证嵌入表单,Valid断言是必需的,对于集合而言,断言是相同的,但带有选项traverse: true

于 2013-09-12T19:37:07.640 回答