New in Symfony 6.1: Services in Route Conditions

Contributed by Renan de Lima in #44405.

Routing in Symfony applications is usually simple and consists of mapping some controller method to some URL path. However, sometimes you need to evaluate complex conditions to decide if some incoming URL should match a given controller. That's why Symfony allows using expressions to match routes. In Symfony 6.1 we've improved routing conditions so you can also call services inside those expressions. To do that, use the new service() function and pass the name of the service to call:

    // src/Controller/DefaultController.php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route;

class DefaultController extends AbstractController {

[Route(

    '/some-path',
    name: 'some_name',
    condition: "service('some_service').someMethod()",
)]
public function someControllerMethod(): Response
{
    // ...
}

}

By default, and for performance reasons, you cannot call any of the services defined in your application. Instead, you must add the routing.condition_service tag or the #[AsRoutingConditionService] attribute to those services that will be available in route conditions:

    use Symfony\Bundle\FrameworkBundle\Routing\Attribute\AsRoutingConditionService;

// ...

[AsRoutingConditionService(alias: 'some_service')]

class SomeService { public function someMethod(): bool { // ... } }

The alias option defines how this service will be referred to inside the expression, so you don't have to use the full service name (which is usually too long).

                Sponsor the Symfony project.

https://symfony.com/blog/new-in-symfony-6-1-services-in-route-conditions?utm_source=Symfony%20Blog%20Feed&utm_medium=feed

Created 3y | May 18, 2022, 8:20:05 AM


Login to add comment

Other posts in this group

Nicolas Grekas returns to Montreal on February 25

Get ready, Montreal! The Full Stack Gurus meetup is back in 2025, and we can't wait to reconnect with the Symfony and PHP community. Mark your calendar for Tuesday, February 25th at 5:00 PM— t

Feb 6, 2025, 4:50:21 PM | Symfony
SymfonyDay Chicago 2025 - The full schedule is live!

Mark your calendars for March 17, 2025 because SymfonyDay Chicago 2025 is shaping up to be an unmissable event! This full-day conference is dedicated to celebrating the amazing contributions o

Feb 5, 2025, 3:20:20 PM | Symfony
SymfonyLive Paris 2025 : Développer avec API Platform 4, ça change quoi ?

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.

Al

Feb 4, 2025, 9:20:06 AM | Symfony
SymfonyLive Berlin 2025: Where have the women of tech history gone?

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

Feb 3, 2025, 2:40:15 PM | Symfony
A Week of Symfony #944 (27 January - 2 February 2025)

This week, Symfony released maintenance versions 6.4.18, 7.1.11 and 7.2.3. In addition, Twig published a security advisory and we shared several updates about upcoming Symfony conferences. Lastly, Sym

Feb 2, 2025, 10:50:16 AM | Symfony
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

Jan 31, 2025, 12:30:18 PM | 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.

💻

Jan 30, 2025, 8:50:03 AM | Symfony