私のフォームは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 を使用して新しいアップロードを追加できますが、検証が機能しません。ここ (ここ、ここ、またはここ)で多くの質問を読みましたが、まだ解決策が見つかりません。
アップロードの種類は次のようになりますが、フォームには対応する種類のエンティティがあるためUpload
(ファイルを空白にすることはできません) 、検証は YAML を使用して定義されます。
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: ~