sbyaute / symfony-dropzone
symfony 表单类型
1.0.0
2022-10-27 08:01 UTC
Requires
This package is not auto-updated.
Last update: 2024-09-26 23:33:30 UTC
README
扩展 SymfonyForm 组件。添加新的表单类型 DropzoneType。
安装
composer require sbyaute/symfony-dropzone
资源
将 dropzone 库添加到项目的模板中
{% block stylesheets %} {{ parent() }} <link rel="stylesheet" href="{{ asset('assets/dropzone/style/dropzone.css') }}"> <style> .dropzone { min-height:25px; padding:5px 5px 5px } .dz-button { width:270px; } </style> {% endblock %} {% block javascripts %} {{ parent() }} <script src="{{ asset('assets/dropzone/js/dropzone-min.js') }}"></script> {% endblock %}``` ## Usage ```php public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder, array $options) { // fichiers is OneToMany $builder->add('fichiers', DropzoneType::class, [ 'class' => Fichier::class, 'maxFilesize' => 8, // Taille max du fichier en MB 'maxFiles' => 6, // Nb max de fichiers téléchargeables 'uploadHandler' => 'uploadHandler', // route pour le chargement 'removeHandler' => 'removeHandler', // route pour la suppression 'downloadHandler' => 'downloadHandler', // route pour le téléchargement 'previewsContainer' => true, // Si true, sort la previsu de la dropzone (pas d'image) 'choice_src' => 'src', // Champ de l'entité contenant le nom du fichier sur le serveur 'acceptedFiles' => '', // Liste des types de fichiers autorisés ('.zip, .doc, .xls') 'dictDefaultMessage' => 'Cliquez ou glissez/déposez vos fichiers ici ...', 'dictRemoveFileConfirmation' => 'Etes-vous sûr ?', // active la confirmation de suppression 'required' => false, ]); }
上传处理程序/移除处理程序路由示例
/** * @Route("/uploadhandler", name="uploadHandler") */ public function uploadhandler(Request $request, ImageUploader $uploader) { $doc = $uploader->upload($request->files->get('file')); $file = new File(); $file->setSrc($doc['src']); ... $this->getDoctrine()->getManager()->persist($file); $this->getDoctrine()->getManager()->flush(); return new JsonResponse($file); } /** * @Route("/removeHandler/{id}", name="removeHandler") */ public function removeHandler(Request $request,File $file = null) { $this->getDoctrine()->getManager()->remove($file); $this->getDoctrine()->getManager()->flush(); return new JsonResponse(true); }