From eb79c8fc1f93a6bc0c196148e32f9c2c8e4a31ed Mon Sep 17 00:00:00 2001 From: rem Date: Thu, 13 Jun 2024 00:27:36 +0200 Subject: [PATCH] post new ui + post all ui + links for posts --- config/packages/twig.yaml | 1 + migrations/Version20240612095513.php | 31 +++++ migrations/Version20240612095600.php | 31 +++++ .../css/{components/post_all.css => base.css} | 0 public/css/components/form.css | 107 ++++++++++++++++++ public/css/components/post.css | 23 +--- public/css/components/post_mini.css | 10 ++ src/Controller/PostController.php | 4 +- src/Entity/Post.php | 27 ++--- src/Form/Type/PostType.php | 15 ++- templates/base.html.twig | 6 +- templates/form/theme.html.twig | 21 ++++ templates/post/all.html.twig | 8 +- templates/post/new.html.twig | 21 +++- templates/post/post.html.twig | 6 +- templates/post/post_mini.html.twig | 2 + var/data.db | Bin 102400 -> 102400 bytes 17 files changed, 265 insertions(+), 48 deletions(-) create mode 100644 migrations/Version20240612095513.php create mode 100644 migrations/Version20240612095600.php rename public/css/{components/post_all.css => base.css} (100%) create mode 100644 public/css/components/form.css create mode 100644 templates/form/theme.html.twig diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml index 3f795d9..90391cb 100644 --- a/config/packages/twig.yaml +++ b/config/packages/twig.yaml @@ -1,5 +1,6 @@ twig: file_name_pattern: '*.twig' + form_themes: ['form_div_layout.html.twig'] when@test: twig: diff --git a/migrations/Version20240612095513.php b/migrations/Version20240612095513.php new file mode 100644 index 0000000..8127645 --- /dev/null +++ b/migrations/Version20240612095513.php @@ -0,0 +1,31 @@ + '\d+'] )] @@ -66,7 +66,7 @@ class PostController extends AbstractController $this->em->persist($post); $this->em->flush(); - return new Response($user->getUserIdentifier()); + return $this->redirectToRoute('display_post', ['id' => $post->getId()]); } return $this->render('post/new.html.twig', [ diff --git a/src/Entity/Post.php b/src/Entity/Post.php index 26143f4..48975f5 100644 --- a/src/Entity/Post.php +++ b/src/Entity/Post.php @@ -7,6 +7,8 @@ use DateTime; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; +use Symfony\Component\Validator\Constraints as Assert; +use Symfony\Component\Validator\Mapping\ClassMetadata; #[ORM\Entity(repositoryClass: PostRepository::class)] class Post @@ -25,9 +27,6 @@ class Post #[ORM\Column] private ?bool $isDream = null; - // #[ORM\Column()] - // private ?DateTime $dateCreated = null; - #[ORM\Column(options: ["default" => 0])] private int $upVote = 0; @@ -97,18 +96,6 @@ class Post return $this; } - public function getDateCreated(): ?DateTime - { - return $this->dateCreated; - } - - public function setDateCreated(?DateTime $dateCreated): static - { - $this->dateCreated = $dateCreated; - - return $this; - } - public function getUpVote(): ?int { return $this->upVote; @@ -198,4 +185,14 @@ class Post return $this; } + + public static function loadValidatorMetadata(ClassMetadata $metadata): void + { + $metadata->addPropertyConstraint('title', new Assert\Length([ + 'min' => 10, + 'max' => 200, + 'minMessage' => 'Your title must be at least {{ limit }} characters long', + 'maxMessage' => 'Your title cannot be longer than {{ limit }} characters', + ])); + } } diff --git a/src/Form/Type/PostType.php b/src/Form/Type/PostType.php index 3578cea..6ca98ac 100644 --- a/src/Form/Type/PostType.php +++ b/src/Form/Type/PostType.php @@ -4,7 +4,6 @@ namespace App\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; -use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -16,12 +15,20 @@ class PostType extends AbstractType { $builder ->add('title', TextType::class) - ->add('text', TextareaType::class) - ->add('dream', CheckboxType::class) + ->add('text', TextareaType::class, [ + 'attr' => ['rows' => '10'], + 'label' => 'Your dream' + ]) + ->add('dream', CheckboxType::class, [ + 'required' => false, + 'label' => 'Was it a nightmare ?' + ]) // ->add('tags', ChoiceType::class, [ // "multiple" => true // ]) - ->add('submit', SubmitType::class) + ->add('submit', SubmitType::class, [ + 'label' => 'Publish' + ]) ; } } diff --git a/templates/base.html.twig b/templates/base.html.twig index 3cda30f..c787378 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -2,13 +2,15 @@ - {% block title %}Welcome!{% endblock %} + {% block title %}Fukafukashita{% endblock %} + + {% block stylesheets %} {% endblock %} {% block javascripts %} - {% block importmap %}{{ importmap('app') }}{% endblock %} + {# {% block importmap %}{{ importmap('app') }}{% endblock %} #} {% endblock %} diff --git a/templates/form/theme.html.twig b/templates/form/theme.html.twig new file mode 100644 index 0000000..bcbe83e --- /dev/null +++ b/templates/form/theme.html.twig @@ -0,0 +1,21 @@ +{% block form_row %} + {% if form.vars.block_prefixes[1] == 'checkbox' %} +
+
+ {{ form_widget(form) }} + {{ form_label(form) }} +
+
+ {{ form_errors(form) }} +
+
+ {% else %} +
+ {{ form_label(form) }} + {{ form_widget(form, {'attr': {'class': 'form-control'}}) }} +
+ {{ form_errors(form) }} +
+
+ {% endif %} +{% endblock %} diff --git a/templates/post/all.html.twig b/templates/post/all.html.twig index 159947c..900f327 100644 --- a/templates/post/all.html.twig +++ b/templates/post/all.html.twig @@ -1,7 +1,12 @@ +{% extends 'base.html.twig' %} + +{% block stylesheets %} - +{% endblock %} +{% block title %}All posts{% endblock %} +{% block body%}

All posts

@@ -9,3 +14,4 @@ {% include 'post/post_mini.html.twig' with {'post' : post} %} {% endfor %}
+{% endblock %} diff --git a/templates/post/new.html.twig b/templates/post/new.html.twig index 0c1a4ce..13023d2 100644 --- a/templates/post/new.html.twig +++ b/templates/post/new.html.twig @@ -1 +1,20 @@ -{{ form(form) }} +{% extends 'base.html.twig' %} + +{% block stylesheets %} + + +{% endblock %} + +{% block title %}New post{% endblock %} + +{% form_theme form 'form/theme.html.twig' %} + +{% block body %} +
+

Post your dream

+ +
+ {{ form(form) }} +
+
+{% endblock %} diff --git a/templates/post/post.html.twig b/templates/post/post.html.twig index 8d4b20b..210868b 100644 --- a/templates/post/post.html.twig +++ b/templates/post/post.html.twig @@ -1,6 +1,10 @@ +{% extends 'base.html.twig' %} + +{% block stylesheets %} +{% endblock %} -{{ post.title }} +{% block title %}{{ post.title }}{% endblock %} {% block body %}
diff --git a/templates/post/post_mini.html.twig b/templates/post/post_mini.html.twig index 0081a38..a502186 100644 --- a/templates/post/post_mini.html.twig +++ b/templates/post/post_mini.html.twig @@ -1,3 +1,4 @@ +
@@ -11,3 +12,4 @@

{{ post.text|u.truncate(150, true, '...') }}

+
diff --git a/var/data.db b/var/data.db index 0ab18af60dbd18c60ef554312137011474454495..8a8ef3bba30458c9d711e1123aa1f7dd636c0208 100644 GIT binary patch delta 182 zcmZozz}B#UZGtqT&O{k!MxBibll>WaH-GV$RN!9Ce~Q12znDLnU2bDz3H#=r^2_Xu z{u3L$bAx#~7#Jf%IXO6Zywnpj6><~v(o>5R63bGP6-x6IQZn=MixW$WQWaA36q1Yb zlZ(p}Gx8yTmkR`Q5*3O|3xHZuQj3#|G7CyF^Ygg)zcMiMzhvNl&;N`6CI4goyZqPr cFY=$>ENF0%pN*B7k&%bD`F;QN_x+5504`TO2><{9 delta 112 zcmZozz}B#UZGtqT+(a2?M!Ag%ll>XlHh=M#RA9Wjv9XSQb5HqYcE-kujkSh~Y#a=X zqNbc296TABK$w`3$jimcg-mnte`R3if62iAp8psB%gurYxB1yvnHd>**qYz>Pk-Of GC