我试图强制进行图片上传。我已经在@Assert\Valid
的集合类型上尝试了它,它在表单顶部生成错误Image is missing!
,即 错误冒泡 然后我通过设置error bubbling
删除了false
。删除 错误冒泡 后,我无法填充图片丢失错误。如何将错误映射到其表单元素,即images
。
请帮助&通过使用Symfony或jQuery为我提供可能的解决方案。并且还建议哪一个最好&这是为什么。
实体:XYZBundle \ Entity \ Abc.php
Class Abc
{
.....
/**
* @JMS\Groups({"details"})
* @JMS\Expose
*
*@Assert\Valid
* @var \Doctrine\Common\Collections\Collection
*/
private $images;
.....
FormType:XYZBundle \ Entity \ AbcType.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
.....
->add('images', CollectionType::class, array(
'entry_type' => MediaType::class,
'label' => false,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'prototype' => true,
'error_bubbling' => false,
))
.....
答案 0 :(得分:0)
通过将以下代码添加到 AbcController ,我现在可以显示错误。我现在已从实体中移除了@Assert\Valid
(XYZBundle \ Entity \ Abc.php)。
控制器:AbcController.php
$images = $form['images']->getData();
$imageExist=false;
foreach ($images as $image){
if(!empty($image->getFilename())){
$imageExist=true;
break;
}
}
if(!$imageExist){
$form['images']->addError(new FormError("Please upload at least one image."));
}
唯一剩下的就是在表单元素之后映射错误。