【问题标题】:Problem with Vichuploader and Symfony ValidionVich Uploader 和 Symfony 验证的问题
【发布时间】:2019-03-14 11:50:32
【问题描述】:

我有这个表格,附有 oneToMany 文档的报告

class ReportType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('documentDatas', CollectionType::class, array(
                'entry_type' => DocumentType::class,
                'allow_add' => true,
                'allow_delete' => true,
                'label' => false
            ))
            ->add('comment', TextType::class, array(
            'label' => 'vat',
            'required' => false,
             ))
            ->add('save', SubmitType::class);
    }
}

这是文档类型

class DocumentType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('examDocument', VichImageType::class, array(
                'label' => 'examDocument',
                'data_class' => null,
                'attr' => array('class' => 'upload-image'),
            ))
            ->add('note', TextType::class, array(
                'label' => 'notes',
                'required' => false,
            ));
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Model\DocumentData',
        ));
    }
}

我使用 VichImageType 上传的地方。当表单验证正常时,一切正常,文件被上传,文档实体添加到我的数据库中。 但是当某些验证被违反时(在文档或评论上)我收到这个奇怪的错误:

“AppBundle\Model\DocumentData”类不可上传。如果你使用 配置 VichUploaderBundle 的注释,你可能只是忘记了 在您的实体顶部添加@Vich\Uploadable。如果你不使用 注解,检查配置文件是否正确 地方。在这两种情况下,清除缓存也可以解决问题。

当我的操作尝试响应视图时,当表单无效时,我会收到此消息:

public function commentAction(Request $request) {
        $reportData = new ReportData();

    $form = $this->createForm(ReportType::class, $reportData);

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()){

        //some logic
    }

    return $this->render('report/form.html.twig', [
        'form' => $form->createView(),  //symfony evidence this row in the exception
    ]);
}

【问题讨论】:

    标签: symfony vichuploaderbundle


    【解决方案1】:

    我解决了在我的数据模型中添加 Vich Uploadable 注释映射,如下所示:

    /**  * @Vich\Uploadable  */ class DocumentData {
        /**
         * @Assert\NotNull()
         * @Assert\File(
         *     maxSize = "5M",
         *     mimeTypes = {"image/*", "application/pdf"}
         * )
         * @Vich\UploadableField(mapping="document_file", fileNameProperty="examDocument")
         */
        public $examDocument;
    
        /**
         * @Assert\Length(
         *      min = 2,
         *      max = 30,
         * )
         */
        public $note;
    
        public function getExamDocument()
        {
            return $this->examDocument;
        }
    
        public function setExamDocument($examDocument)
        {
            $this->examDocument = $examDocument;
        }
    
        public static function create(Document $document)
        {
            $edm = new static();
            $edm->examDocument = $document->getExamDocument();
            $edm->note = $document->getNote();
    
            return $edm;
        } }
    

    感谢Garakhelp

    【讨论】:

      猜你喜欢
      • 2019-05-19
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多