簡體   English   中英

路由在 routes.yaml 中聲明,但 symfony 沒有找到它們。 即使我嘗試使用注釋

[英]Routes are declared in routes.yaml but symfony don't found them. Even when i try using annotations

我有一個 symfony 應用程序忽略了我可以聲明的 roytes。 例如,我在routes.yaml中有這行代碼:

app_titi
    path: /titi
    methods: ['GET']
    defaults:
        _controller: 'App\Controller\TitiController::index'

我做了緩存:清除,當我嘗試在瀏覽器中查看結果時,找不到任何路線。

controller 存在並具有正確的名稱。

我的上下文是 Symfony 6.2、PHP 8.1,運行在 Docker 個容器中。

我嘗試創建一個新的 controller,我在routes.yaml中聲明了它,結果相同。

我嘗試創建一個 controller 但這次使用注釋,結果相同。

當我詢問命令router:debug時,symfony 控制台返回空結果。

感謝您的幫助!

為了獲得更好的答案,請提供您的 controller 路徑和代碼示例。

在 Symfony 6.2 中,默認情況下,您不必更改 routes.yaml,因為如果您將其保留在 routes.yaml 中,則會自動檢測在 controller 中聲明的所有路由。
這是我的 routes.yaml 例如:

controllers:
    resource: ../src/Controller/
    type: annotation

kernel:
    resource: ../src/Kernel.php
    type: annotation

然后在controller里面

<?php

namespace App\Controller;


use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class HomeController extends AbstractController
{

    // This not annotation but php attribute, i advise you to use it instead
    #[Route('/', name: "home")]
    public function home(): Response
    {
        return $this->render('website/index.html.twig');
    }
}

閱讀本文以了解為什么 symfony 現在使用 php 屬性:

https://symfony.com/blog/new-in-symfony-5-2-php-8-attributes

@托馬斯L

嗨,這是我的 routes.yaml:

controllers:
    resource:
        path: ../src/Controller/
        namespace: App\Controller
    type: attribute

app_titi:
    path: /titi
    methods: ['GET']
    defaults:
        _controller: 'App\Controller\TitiController::index'

其他路線現在在屬性中聲明。

這是我的 Titi controller:

<?php

namespace App\Controller;

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

class TitiController extends AbstractController
{
    #[Route('/titi', name: 'app_titi')]
    public function index(): Response
    {
        return $this->render('titi/index.html.twig', [
            'controller_name' => 'TitiController',
        ]);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM