Skip to content

Commit d65f27b

Browse files
committed
docs(routing): Add Attribute code examples for alias in #[Route] attribute
1 parent 0b180d5 commit d65f27b

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

routing.rst

+64
Original file line numberDiff line numberDiff line change
@@ -1307,8 +1307,34 @@ Route Aliasing
13071307

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

1310+
.. note::
1311+
1312+
In next code examples in YAML, XML and PHP, ``original_route_name`` is an existing route,
1313+
``new_route_name`` is a new route whose alias refers to ``original_route_name``.
1314+
1315+
In Attribute code example, ``original_route_name`` is NOT an existing route.
1316+
``new_route_name`` is the new name of a route which was previously named ``original_route_name``.
1317+
13101318
.. configuration-block::
13111319

1320+
.. code-block:: php-attributes
1321+
1322+
// src/Controller/DefaultController.php
1323+
namespace App\Controller;
1324+
1325+
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
1326+
use Symfony\Component\HttpFoundation\Response;
1327+
use Symfony\Component\Routing\Attribute\Route;
1328+
1329+
class DefaultController extends AbstractController
1330+
{
1331+
#[Route('/path', name: 'new_route_name', alias: ['original_route_name'])]
1332+
public function action(): Response
1333+
{
1334+
// ...
1335+
}
1336+
}
1337+
13121338
.. code-block:: yaml
13131339
13141340
# config/routes.yaml
@@ -1349,6 +1375,44 @@ you decided not to maintain it anymore), you can deprecate its definition:
13491375

13501376
.. configuration-block::
13511377

1378+
.. code-block:: php-attributes
1379+
1380+
// src/Controller/DefaultController.php
1381+
namespace App\Controller;
1382+
1383+
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
1384+
use Symfony\Component\HttpFoundation\Response;
1385+
use Symfony\Component\Routing\Attribute\Route;
1386+
1387+
class DefaultController extends AbstractController
1388+
{
1389+
// this outputs the following generic deprecation message:
1390+
// 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.
1391+
#[Route('/path',
1392+
name: 'new_route_name',
1393+
alias: new DeprecatedAlias(aliasName: 'original_route_name', package: 'acme/package', version: '1.2')
1394+
)]
1395+
// you can also define a custom deprecation message (%alias_id% placeholder is available)
1396+
#[Route('/path',
1397+
name: 'new_route_name',
1398+
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.')
1399+
)]
1400+
public function action(): Response
1401+
{
1402+
// ...
1403+
}
1404+
1405+
#[Route('/path', name: 'new_route_name', alias: [
1406+
new DeprecatedAlias('first_original_route_name', 'acme/package', '1.0'),
1407+
new DeprecatedAlias('second_original_route_name', 'acme/package', '2.0'),
1408+
new DeprecatedAlias('third_original_route_name', 'acme/package', '3.0'),
1409+
])]
1410+
public function another_action()
1411+
{
1412+
// ...
1413+
}
1414+
}
1415+
13521416
.. code-block:: yaml
13531417
13541418
new_route_name:

0 commit comments

Comments
 (0)