亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Symfony 6中使用內(nèi)部目錄中的控制器的命名路由
P粉511749537
P粉511749537 2024-03-26 16:27:48
0
1
595

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

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

我的routes.yaml相應(yīng)修改

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

現(xiàn)在的問題是我的所有路由都有一個以 app_web 為前綴的名稱。我想這是由于這種結(jié)構(gòu)。

$ 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_index 如何去掉這個前綴?

P粉511749537
P粉511749537

全部回復(fù)(1)
P粉011684326

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

名稱是使用控制器的類和方法的完全限定名稱生成的(盡管由于某種原因沒有命名空間的最后一部分 -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');
    }
}

使用內(nèi)置選項您可以向一組路由添加前綴,但不要將其從自動生成的名稱中刪除。

如果這對于您的用例“自動”發(fā)生確實很重要,我想你可以構(gòu)建自己的路由加載器,但我想說這有點過分了。只需適當(dāng)?shù)孛酚?,或者使用自動生成的名稱即可。


顯式命名路由通常是一個更好的想法/實踐,因為如果您在其他任何地方引用路由名稱,即使您選擇將控制器重構(gòu)為不同的代碼結(jié)構(gòu),也可以保證名稱保持不變。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板