首頁  >  問答  >  主體

Symfony 6中使用內部目錄中的控制器的命名路由

我將所有控制器移至 Symfony 6 專案中的 /src/Web/Controller ,如下所示

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

我的routes.yaml相應修改

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

現在的問題是我的所有路由都有一個以 app_web 為前綴的名稱。我想這是由於這種結構。

$ php bin/console debug:router 指令輸出如下:

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

這裡我只希望名稱為 post_

P粉511749537P粉511749537230 天前446

全部回覆(1)我來回復

  • P粉011684326

    P粉0116843262024-03-27 12:11:43

    如果您沒有明確命名路由,它們會為您命名。

    名稱是使用控制器的類別和方法的完全限定名稱產生的(儘管由於某種原因沒有命名空間的最後一部分 -controller)。

    如果您不想使用自動產生的名稱,只需自己命名您的路線即可:

    #[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');
        }
    }

    使用%E

    回覆
    0
  • 取消回覆