Routage nommé dans Symfony 6 utilisant le contrôleur du répertoire interne
P粉511749537
P粉511749537 2024-03-26 16:27:48
0
1
445

J'ai déplacé tous les contrôleurs vers /src/Web/Controller dans mon projet Symfony 6 comme indiqué ci-dessous

├── src
│   ├── ...
│   └── Web
│   |    ├── Controller
│   |    ├── ....
|   |── Kernel.php

Mon routes.yamlmodifié en conséquence

#routes.yaml
controllers:
    resource: ../src/Web/Controller/
    type: annotation

Maintenant, le problème est que tous mes itinéraires ont un nom préfixé par app_web. Je pense que c'est dû à cette structure.

$ php bin/console debug:router Le résultat de la commande est le suivant :

...
...
app_web_post_index    GET|HEAD        ANY      ANY    /post/             
app_web_post_create   GET|HEAD|POST   ANY      ANY    /post/create

Ici, je veux seulement que le nom soit post_index Comment supprimer ce préfixe ?

P粉511749537
P粉511749537

répondre à tous(1)
P粉011684326

Si vous ne nommez pas explicitement l'itinéraire, ils le nommeront pour vous.

Le nom est généré en utilisant les noms complets des classes et méthodes du contrôleur (bien que pour une raison quelconque, il n'y ait pas de dernière partie de l'espace de noms - controller).

Si vous ne souhaitez pas utiliser le nom généré automatiquement, nommez simplement votre itinéraire vous-même :

#[Route('/post')]
class Post
{
    #[Route(path: '/', name: 'post_index', methods: ['HEAD', 'GET'])]
    public function index(Request $request): Response
    {
        return new Response('post index');
    }

    #[Route(path: '/create', name: 'post_create', methods: ['HEAD', 'GET', 'POST'])]
    public function create(Request $request): Response
    {
        return new Response('post create');
    }
}

À l'aide des options intégrées , vous pouvez ajouter un préfixe à un ensemble d'itinéraires, mais ne le supprimez pas du nom généré automatiquement.

Si cela est vraiment important pour que votre cas d'utilisation se produise "automatiquement", je suppose que vous pourriez créer votre propre chargeur de route, mais je dirais que c'est un peu exagéré. Nommez simplement l'itinéraire de manière appropriée ou utilisez un nom généré automatiquement.


Nommer explicitement les routes est généralement une meilleure idée/pratique, car si vous faites référence au nom de la route ailleurs, il est garanti que le nom restera le même même si vous choisissez de refactoriser le contrôleur dans une structure de code différente.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!