Symfony3 - 找不到“GET / home”的路线

时间:2017-01-09 23:37:35

标签: php symfony

我正在按照本教程在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合作,我迷路了!

Symfony Error Message

5 个答案:

答案 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

More info

答案 4 :(得分:-1)

可能的原因是您的项目未启用注释: 参见文档here

运行此命令以获取它:

 composer require annotations

应该可以解决问题。 (也许之后做一个cache:clear)