英文:
Symfony does not find routes in Controller
问题
我最近购买了一台新的笔记本电脑,并安装了PHP 8.2.8和Symfony。我以为我可以开始一个新的Symfony 5.4 Web应用程序项目,但每次我启动本地服务器时,它都找不到我的Controller中的路由。
我使用了php bin/console make:controller
命令,以前它已经行之有效,但现在似乎无法正常工作。
我尝试在网上寻找答案,但据我所知,没有人遇到过相同的问题。我在我的IndexController中有以下代码,但出现了No route found for "GET http://127.0.0.1:8000/index"
错误:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class IndexController extends AbstractController
{
#[Route('/index', name: 'app_index')]
public function index(): Response
{
return $this->render('index/index.html.twig', [
'controller_name' => 'IndexController',
]);
}
}
只是模板,正如您所见。
这些是路由:
-------------------------- -------- -------- ------ -----------------------------------
Name Method Scheme Host Path
-------------------------- -------- -------- ------ -----------------------------------
_preview_error ANY ANY ANY /_error/{code}.{_format}
_wdt ANY ANY ANY /_wdt/{token}
_profiler_home ANY ANY ANY /_profiler/
_profiler_search ANY ANY ANY /_profiler/search
_profiler_search_bar ANY ANY ANY /_profiler/search_bar
_profiler_phpinfo ANY ANY ANY /_profiler/phpinfo
_profiler_search_results ANY ANY ANY /_profiler/{token}/search/results
_profiler_open_file ANY ANY ANY /_profiler/open
_profiler ANY ANY ANY /_profiler/{token}
_profiler_router ANY ANY ANY /_profiler/{token}/router
_profiler_exception ANY ANY ANY /_profiler/{token}/exception
_profiler_exception_css ANY ANY ANY /_profiler/{token}/exception.css
-------------------------- -------- -------- ------ -----------------------------------
我觉得在安装Symfony时可能出了问题,但我不知道出了什么问题。
英文:
I recently got a new laptop, and after I installed PHP 8.2.8 and Symfony, I thought I'd be able to start a new Symfony 5.4 webapp project but whenever I start the local server it doesn't find the routes in my Controller.
I used the command php bin/console make:controller
which has done the trick previously, but now doesn't seem to get it to work.
I've tried looking for answers online but there's no one who has had the same problem, as far as I know. I get the No route found for "GET http://127.0.0.1:8000/index"
error while the following code is in my IndexController:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class IndexController extends AbstractController
{
#[Route('/index', name: 'app_index')]
public function index(): Response
{
return $this->render('index/index.html.twig', [
'controller_name' => 'IndexController',
]);
}
}
Just the template, as you can see.
-------------------------- -------- -------- ------ -----------------------------------
Name Method Scheme Host Path
-------------------------- -------- -------- ------ -----------------------------------
_preview_error ANY ANY ANY /_error/{code}.{_format}
_wdt ANY ANY ANY /_wdt/{token}
_profiler_home ANY ANY ANY /_profiler/
_profiler_search ANY ANY ANY /_profiler/search
_profiler_search_bar ANY ANY ANY /_profiler/search_bar
_profiler_phpinfo ANY ANY ANY /_profiler/phpinfo
_profiler_search_results ANY ANY ANY /_profiler/{token}/search/results
_profiler_open_file ANY ANY ANY /_profiler/open
_profiler ANY ANY ANY /_profiler/{token}
_profiler_router ANY ANY ANY /_profiler/{token}/router
_profiler_exception ANY ANY ANY /_profiler/{token}/exception
_profiler_exception_css ANY ANY ANY /_profiler/{token}/exception.css
-------------------------- -------- -------- ------ -----------------------------------
These are the routes.
I feel like something might've gone wrong during the installation of Symfony, but I have no clue what's gone wrong.
答案1
得分: 0
你应该设置路由器来解析Controller目录中文件的属性。将以下代码粘贴到你的 config/routes/attributes.yaml
文件中:
controllers:
resource:
path: ../../src/Controller/
namespace: App\Controller
type: attribute
英文:
You should set up router to parse attributes on files in the Controller directory. Paste this code to your config/routes/attributes.yaml
:
<!-- language: lang-yaml -->
controllers:
resource:
path: ../../src/Controller/
namespace: App\Controller
type: attribute
答案2
得分: 0
请确保在每次配置更改后执行 bin/console cache:clear
。
英文:
Make sure to execute bin/console cache:clear
after every configuration change
答案3
得分: 0
我是个傻瓜,忘记了在Symfony中要求注释。
感谢你的帮助,但在几个月的首次设置Symfony后,我完全忘记了最基本的步骤:要求注释。
英文:
I was an idiot, and forgot to require annotations in Symfony.
Thanks for the help, but after months of setting up Symfony for the first time i completely forgot the most basic step: requiring annotations.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论