From 95a2d0a89427b270dffa58329491baa4c451bea4 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 22 Mar 2021 17:52:33 +0100 Subject: [PATCH] add file_widget render --- config/packages/twig.yaml | 2 +- core/Form/Site/Page/FileBlockType.php | 1 + src/Entity/Blog/Post.php | 11 +++++- .../Blog/PostEventSubscriber.php | 2 +- templates/blog/post_admin/_form.html.twig | 6 ---- templates/blog/post_admin/index.html.twig | 2 +- templates/blog/post_admin/show.html.twig | 2 +- .../form/bootstrap_4_form_theme.html.twig | 36 +++++++++++++++++++ 8 files changed, 51 insertions(+), 11 deletions(-) create mode 100644 templates/site/form/bootstrap_4_form_theme.html.twig diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml index 90c5321..6e4dd70 100644 --- a/config/packages/twig.yaml +++ b/config/packages/twig.yaml @@ -1,3 +1,3 @@ twig: default_path: '%kernel.project_dir%/templates' - form_themes: ['bootstrap_4_layout.html.twig'] + form_themes: ['site/form/bootstrap_4_form_theme.html.twig'] diff --git a/core/Form/Site/Page/FileBlockType.php b/core/Form/Site/Page/FileBlockType.php index 47f94d1..ea1c41f 100644 --- a/core/Form/Site/Page/FileBlockType.php +++ b/core/Form/Site/Page/FileBlockType.php @@ -30,6 +30,7 @@ class FileBlockType extends TextBlockType { $resolver->setDefaults([ 'data_class' => FileBlock::class, + 'block_prefix' => 'file_block', 'options' => [], ]); } diff --git a/src/Entity/Blog/Post.php b/src/Entity/Blog/Post.php index 5b2fd93..734fcc3 100644 --- a/src/Entity/Blog/Post.php +++ b/src/Entity/Blog/Post.php @@ -9,6 +9,7 @@ use App\Repository\Blog\PostRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; +use Symfony\Component\HttpFoundation\File\File; /** * @ORM\Entity(repositoryClass=PostRepository::class) @@ -150,8 +151,16 @@ class Post implements EntityInterface return $this; } - public function getImage(): ?string + public function getImage() { + if (is_string($this->image)) { + if (file_exists($this->image)) { + return new File($this->image); + } + + return null; + } + return $this->image; } diff --git a/src/EventSuscriber/Blog/PostEventSubscriber.php b/src/EventSuscriber/Blog/PostEventSubscriber.php index 3538ac0..64a9ea3 100644 --- a/src/EventSuscriber/Blog/PostEventSubscriber.php +++ b/src/EventSuscriber/Blog/PostEventSubscriber.php @@ -55,7 +55,7 @@ class PostEventSubscriber extends EntityManagerEventSubscriber $finder->files()->in('uploads/post'); foreach ($finder as $file) { - $image = str_replace('uploads/', '', $file->getPathname()); + $image = $file->getPathname(); $post = $this->query->create() ->where('.image = :image') diff --git a/templates/blog/post_admin/_form.html.twig b/templates/blog/post_admin/_form.html.twig index 684bf52..72b6f96 100644 --- a/templates/blog/post_admin/_form.html.twig +++ b/templates/blog/post_admin/_form.html.twig @@ -22,12 +22,6 @@ {% for item in ['image', 'imageCaption', 'status', 'publishedAt', 'author'] %}
{{ form_row(form[item]) }} - - {% if item == 'image' %} - {% if entity.image %} - - {% endif %} - {% endif %}
{% endfor %} diff --git a/templates/blog/post_admin/index.html.twig b/templates/blog/post_admin/index.html.twig index 03c06b5..65ce227 100644 --- a/templates/blog/post_admin/index.html.twig +++ b/templates/blog/post_admin/index.html.twig @@ -37,7 +37,7 @@ {% if item.image %} - {% set image = asset(item.image) %} + {% set image = asset(item.image.pathname) %} {% else %} {% set image = asset('build/images/no-image.png') %} {% endif %} diff --git a/templates/blog/post_admin/show.html.twig b/templates/blog/post_admin/show.html.twig index 1a6fd42..65ebef3 100644 --- a/templates/blog/post_admin/show.html.twig +++ b/templates/blog/post_admin/show.html.twig @@ -68,7 +68,7 @@ {% if entity.image %}
- {{ entity.imageCaption }} + {{ entity.imageCaption }}
{{ entity.imageCaption }} diff --git a/templates/site/form/bootstrap_4_form_theme.html.twig b/templates/site/form/bootstrap_4_form_theme.html.twig new file mode 100644 index 0000000..fae34c5 --- /dev/null +++ b/templates/site/form/bootstrap_4_form_theme.html.twig @@ -0,0 +1,36 @@ +{% extends 'bootstrap_4_layout.html.twig' %} + +{% block file_widget -%} +
+
+ {% set value = form.vars.data %} + + {% if value %} + {% if value and value.extension in ['jpg', 'gif', 'png'] %} +
+
+ +
+
+ {{- parent() -}} +
+
+ {% else %} +
+
+ {{- parent() -}} + + +
+
+ {% endif %} + {% else %} + {{- parent() -}} + {% endif %} +
+
+{% endblock %}