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 0ab18af..8a8ef3b 100644 Binary files a/var/data.db and b/var/data.db differ