From 87b0e0367bdda93a65dc2e94ebd3f7c9d4c87d4d Mon Sep 17 00:00:00 2001 From: Javier Eguiluz Date: Wed, 20 Jun 2018 16:18:54 +0200 Subject: [PATCH] Added more great Symfony 4.1 features --- config/packages/framework.yaml | 4 +++- config/packages/prod/monolog.yaml | 4 +--- src/Controller/Admin/BlogController.php | 4 ++-- src/Controller/BlogController.php | 2 +- src/Entity/Post.php | 1 + src/Entity/User.php | 5 +++++ tests/Controller/BlogControllerTest.php | 13 +++++++++++++ 7 files changed, 26 insertions(+), 7 deletions(-) diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index de48b3a06..94522b5d7 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -25,4 +25,6 @@ framework: # When 'ide' is set to null the file is opened in your web browser. # See https://symfony.com/doc/current/reference/configuration/framework.html#ide ide: ~ - validation: { enable_annotations: true } + validation: + email_validation_mode: 'html5' + enable_annotations: true diff --git a/config/packages/prod/monolog.yaml b/config/packages/prod/monolog.yaml index ae69007f0..04a2ae117 100644 --- a/config/packages/prod/monolog.yaml +++ b/config/packages/prod/monolog.yaml @@ -4,9 +4,7 @@ monolog: type: fingers_crossed action_level: error handler: nested - excluded_404s: - # regex: exclude all 404 errors from the logs - - ^/ + excluded_http_codes: [404] nested: type: stream path: '%kernel.logs_dir%/%kernel.environment%.log' diff --git a/src/Controller/Admin/BlogController.php b/src/Controller/Admin/BlogController.php index dbf7d8e51..19560d6ca 100644 --- a/src/Controller/Admin/BlogController.php +++ b/src/Controller/Admin/BlogController.php @@ -114,7 +114,7 @@ public function new(Request $request): Response /** * Finds and displays a Post entity. * - * @Route("/{id}", requirements={"id": "\d+"}, methods={"GET"}, name="admin_post_show") + * @Route("/{id<\d+>}", methods={"GET"}, name="admin_post_show") */ public function show(Post $post): Response { @@ -130,7 +130,7 @@ public function show(Post $post): Response /** * Displays a form to edit an existing Post entity. * - * @Route("/{id}/edit", requirements={"id": "\d+"}, methods={"GET", "POST"}, name="admin_post_edit") + * @Route("/{id<\d+>}/edit",methods={"GET", "POST"}, name="admin_post_edit") * @IsGranted("edit", subject="post", message="Posts can only be edited by their authors.") */ public function edit(Request $request, Post $post): Response diff --git a/src/Controller/BlogController.php b/src/Controller/BlogController.php index 21f8d08cd..8ae193806 100644 --- a/src/Controller/BlogController.php +++ b/src/Controller/BlogController.php @@ -39,7 +39,7 @@ class BlogController extends AbstractController /** * @Route("/", defaults={"page": "1", "_format"="html"}, methods={"GET"}, name="blog_index") * @Route("/rss.xml", defaults={"page": "1", "_format"="xml"}, methods={"GET"}, name="blog_rss") - * @Route("/page/{page}", defaults={"_format"="html"}, requirements={"page": "[1-9]\d*"}, methods={"GET"}, name="blog_index_paginated") + * @Route("/page/{page<[1-9]\d*>}", defaults={"_format"="html"}, methods={"GET"}, name="blog_index_paginated") * @Cache(smaxage="10") * * NOTE: For standard formats, Symfony will also automatically choose the best diff --git a/src/Entity/Post.php b/src/Entity/Post.php index fe25e4b8b..b91f83e93 100644 --- a/src/Entity/Post.php +++ b/src/Entity/Post.php @@ -70,6 +70,7 @@ class Post * * @ORM\Column(type="string") * @Assert\NotBlank(message="post.blank_summary") + * @Assert\Length(max=255) */ private $summary; diff --git a/src/Entity/User.php b/src/Entity/User.php index a2f36c33b..2d2ce20fd 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -13,6 +13,7 @@ use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\UserInterface; +use Symfony\Component\Validator\Constraints as Assert; /** * @ORM\Entity(repositoryClass="App\Repository\UserRepository") @@ -42,6 +43,7 @@ class User implements UserInterface, \Serializable * @var string * * @ORM\Column(type="string") + * @Assert\NotBlank() */ private $fullName; @@ -49,6 +51,8 @@ class User implements UserInterface, \Serializable * @var string * * @ORM\Column(type="string", unique=true) + * @Assert\NotBlank() + * @Assert\Length(min=2, max=50) */ private $username; @@ -56,6 +60,7 @@ class User implements UserInterface, \Serializable * @var string * * @ORM\Column(type="string", unique=true) + * @Assert\Email() */ private $email; diff --git a/tests/Controller/BlogControllerTest.php b/tests/Controller/BlogControllerTest.php index 822cd4341..747b9347e 100644 --- a/tests/Controller/BlogControllerTest.php +++ b/tests/Controller/BlogControllerTest.php @@ -84,4 +84,17 @@ public function testNewComment() $this->assertSame('Hi, Symfony!', $newComment); } + + public function testAjaxSearch() + { + $client = static::createClient(); + $client->xmlHttpRequest('GET', '/en/blog/search', ['q' => 'lorem']); + + $results = json_decode($client->getResponse()->getContent(), true); + + $this->assertSame('application/json', $client->getResponse()->headers->get('Content-Type')); + $this->assertCount(1, $results); + $this->assertSame('Lorem ipsum dolor sit amet consectetur adipiscing elit', $results[0]['title']); + $this->assertSame('Jane Doe', $results[0]['author']); + } }