New in Symfony 6.2: Built-in Cache, Security, Template and Doctrine Attributes

Symfony 6.2 will be released at the end of November 2022. This is the first article of the series that shows the most important new features introduced by Symfony 6.2.


Symfony introduced annotations to configure cache, security, templates and Doctrine more than 10 years ago. They were available via an external bundle called SensioFrameworkExtraBundle.

With the introduction of PHP attributes, we turned those annotations into attributes. However, you still had to install sensio/framework-extra-bundle package to use them. For example:

use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\Routing\Annotation\Route;

#[Route('/comment/{postSlug}/new', methods: ['POST'], name: 'comment_new')]
#[IsGranted('IS_AUTHENTICATED_FULLY')]
#[ParamConverter('post', options: ['mapping' => ['postSlug' => 'slug']])]
public function addComment(Request $request, Post $post): Response
{
    // ...
}

In Symfony 6.2, we've introduced #[IsGranted], #[Cache], #[Template] and #[ParamConverter] as native attributes, so you no longer need to install any external package to use them.

In most applications, you will only need to update the imported namespace, without having to change anything in your code:

-use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
+use Symfony\Component\Security\Http\Attribute\IsGranted;
-use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
+use Symfony\Component\HttpKernel\Attribute\Cache;

However, if you use #[ParamConverter], you'll need to make some changes to turn it into the new #[MapEntity] attribute. The new attribute is applied to properties, instead of to the entire method:

-use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
+use Symfony\Bridge\Doctrine\Attribute\MapEntity;

 // ...
-#[ParamConverter('post', options: ['mapping' => ['postSlug' => 'slug']])]
-public function addComment(Request $request, Post $post): Response
+public function addComment(
+    Request $request,
+    #[MapEntity(mapping: ['postSlug' => 'slug'])] Post $post
+): Response
 {
     // ...
 }

We believe that PHP attributes are a great way to add metadata configuration to code. However, if you don't like them, you can skip them and keep configuring things in XML/YAML or directly in PHP code.

            <hr style="margin-bottom: 5px" />
            <div style="font-size: 90%">
                <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
            </div>

https://symfony.com/blog/new-in-symfony-6-2-built-in-cache-security-template-and-doctrine-attributes?utm_source=Symfony%20Blog%20Feed&utm_medium=feed

Établi 2y | 28 oct. 2022 à 14:20:59


Connectez-vous pour ajouter un commentaire

Autres messages de ce groupe

Back on the inspiring SymfonyCon Vienna 2024!

We were absolutely thrilled to gather with the incredible Symfony community for the first time in Vienna, Austria, from December 5th to 6th, surrounded by the warm and festive atmosphere of the

31 janv. 2025 à 12:30:18 | Symfony
SymfonyLive Paris 2025 : Reveal of workshop topics!

SymfonyLive Paris 2025, conference in French language only, will take place from March 27 to 28! The schedule is currently being revealed as we go along. More details are available here.

💻

30 janv. 2025 à 08:50:03 | Symfony
Get Symfony news on your favorite social network

Symfony has been active on X, Mastodon, and Bluesky for some time, but until recently, not all platforms received equal attention. Since Twitter (now X) was our first social network, all blog posts we

29 janv. 2025 à 14:20:10 | Symfony
SymfonyLive Berlin 2025: Demystify the magic of the Container

SymfonyLive Berlin 2025, conference held in English, will take place from April 1 to 4! The schedule is being revealed gradually. More details are available here.

As we are now unveiling th

29 janv. 2025 à 14:20:10 | Symfony
Twig CVE-2025-24374: Missing output escaping for the null coalesce operator

Affected versions

Twig versions >=3.16.0,<3.19.0 are affected by this security issue.

The issue has been fixed in Twig 3.19.0.

Description

When using the null coalesce operator (??), output esc

29 janv. 2025 à 09:40:06 | Symfony
Symfony 6.4.18 released

Symfony 6.4.18 has just been released. Here is the list of the most important changes since 6.4.17:

bug #58889 [Serializer] Handle default context in Serializer (@Valmonzo)

bug #59631 [HttpClient

29 janv. 2025 à 09:40:05 | Symfony
Symfony 7.1.11 released

Symfony 7.1.11 has just been released. Here is the list of the most important changes since 7.1.10:

bug #58889 [Serializer] Handle default context in Serializer (@Valmonzo)

bug #59631 [HttpClient

29 janv. 2025 à 09:40:05 | Symfony