[英]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.