我正在按照本教程在Symfony 3项目中设置我的第一页:Joyful Development with Symfony 3 Tutorial
我在HomeController
中创建了一个/src/AppBundle/Controller/
文件。该文件的内容是:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
class HomeController {
/**
* @Route("/home")
*/
public function showAction() {
return new Response('Testing!');
}
}
我只是想弄明白:“测试!”从上面的showAction()
函数显示。但是,我的页面有错误:找不到“GET / home”
上面的设置有问题吗?对不起,如果这是一个简单的问题,这是我第一次与Symfony合作,我迷路了!
答案 0 :(得分:5)
如果您在localhost上进行测试,则可以转到项目目录并使用内置Web服务器测试项目:
php bin/console server:start
并阻止它:
php bin/console server:stop
要调试路线,请输入:
php bin/console debug:router
那应显示所有路线。一旦这个工作,这是让你的Nginx工作的问题。
您还可以为内置服务器指定其他IP地址。查看文档: http://symfony.com/doc/current/setup/built_in_web_server.html#starting-the-web-server
答案 1 :(得分:2)
根据您的htaccess
文件,我的猜测是您在htaccess文件中没有正确的重写。路由的工作方式,从一个非常高的层次,是你总是命中相同的文件,代码解析URL并调用正确的路由。为了使其工作,您需要告诉服务器如何操作。
首先,请参阅Configuring a Web Server以确保您的服务器配置正确。
然后,尝试在.htaccess
文件中添加此内容:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Explicitly disable rewriting for front controllers
RewriteRule ^app_dev.php - [L]
RewriteRule ^app.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
#RewriteRule ^(.*)$ /app.php [QSA,L]
RewriteRule ^(.*)$ /app_dev.php [QSA,L]
</IfModule>
这应该可以解决您的问题。如果没有,请查看this Gist。
免责声明:我没有使用Symfony框架直接使用 ,我主要在构建于Symfony之上的Laravel中工作。我已经玩过Symfony Components,但从未在Symfony中构建完整的项目。您可能需要从我发布的示例中略微调整htaccess配置,但这至少应该指向正确的方向。
答案 2 :(得分:1)
你有没有试过再打开和关闭?看到。 IT人群
在某些情况下,新路由尚未添加到缓存中,因此尝试删除project_name / var / cache中的项目缓存并重新启动服务器php bin / console服务器:运行 这为我解决了。
祝你好运答案 3 :(得分:0)
您是否在文件app / config / routing.yml中启用了路由?需要将路由导入为任何其他路由资源。
# app/config/routing.yml
# import routes from a controller class
home:
resource: "@AppBundle/Controller/HomeController.php"
type: annotation
答案 4 :(得分:-1)