Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Routing] Add Attribute code examples for alias in #[Route] attribute #20638

Open
wants to merge 1 commit into
base: 7.3
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions routing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1307,8 +1307,34 @@ Route Aliasing

Route alias allow you to have multiple name for the same route:

.. note::

In next code examples in YAML, XML and PHP, ``original_route_name`` is an existing route,
``new_route_name`` is a new route whose alias refers to ``original_route_name``.

In Attribute code example, ``original_route_name`` is NOT an existing route.
``new_route_name`` is the new name of a route which was previously named ``original_route_name``.

.. configuration-block::

.. code-block:: php-attributes

// src/Controller/DefaultController.php
namespace App\Controller;

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

class DefaultController extends AbstractController
{
#[Route('/path', name: 'new_route_name', alias: ['original_route_name'])]
public function action(): Response
{
// ...
}
}

.. code-block:: yaml

# config/routes.yaml
Expand Down Expand Up @@ -1349,6 +1375,44 @@ you decided not to maintain it anymore), you can deprecate its definition:

.. configuration-block::

.. code-block:: php-attributes

// src/Controller/DefaultController.php
namespace App\Controller;

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

class DefaultController extends AbstractController
{
// this outputs the following generic deprecation message:
// Since acme/package 1.2: The "new_route_name" route alias is deprecated. You should stop using it, as it will be removed in the future.
#[Route('/path',
name: 'new_route_name',
alias: new DeprecatedAlias(aliasName: 'original_route_name', package: 'acme/package', version: '1.2')
)]
// you can also define a custom deprecation message (%alias_id% placeholder is available)
#[Route('/path',
name: 'new_route_name',
alias: new DeprecatedAlias(aliasName: 'original_route_name', package: 'acme/package', version: '1.2', message: 'The "%alias_id%" route alias is deprecated. Do not use it anymore.')
)]
public function action(): Response
{
// ...
}

#[Route('/path', name: 'new_route_name', alias: [
new DeprecatedAlias('first_original_route_name', 'acme/package', '1.0'),
new DeprecatedAlias('second_original_route_name', 'acme/package', '2.0'),
new DeprecatedAlias('third_original_route_name', 'acme/package', '3.0'),
])]
public function another_action()
{
// ...
}
}

.. code-block:: yaml

new_route_name:
Expand Down