我的表单使用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我可以添加新的上传,但验证不起作用。我在这里阅读了很多问题(here,here或here),但我还没有找到解决方案。
这是上传类型的样子,而验证是使用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: ~
答案 0 :(得分:4)
来自评论讨论:
是的,基本上每个表单都应该有一个数据类。它不是一个实体,一个简单的模型类就足够了。所以你可以对它进行验证。要验证嵌入表单,Valid
断言是必需的,对于集合,请使用traverse: true
选项。