【问题标题】:Symfony first-steps problemsSymfony 第一步问题
【发布时间】:2017-01-17 14:22:15
【问题描述】:

我是 Symfony 的新手,我正在学习教程。第一个练习很简单,但是不知道为什么不行。

在我的源文件夹中,我首先尝试了以下几行:

<?php

namespace AppBundle\Controller;


use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;

class GenusController
{
    /**
     * @Route("/genus")
     */

    public function showAction()
    {
        return new Response('Test ');

    }

}

我在浏览器中尝试过:

http://localhost:8888/my_project/web/genus

而且它有效。但是,如果我添加新行:

class GenusController
{
    /**
     * @Route("/genus/{genusName}")
     */

    public function showAction($genusName)
    {
        return new Response('The genus: '.$genusName);

    }

}

并对其进行了测试:

http://localhost:8888/my_project/web/genus/test

我的浏览器显示:

哎呀!发生错误 服务器返回“404 Not Found”。 东西坏了。请让我们知道您在此期间在做什么 错误发生。我们会尽快修复它。对不起任何 造成的不便。

缺少什么? 有什么建议吗?

提前谢谢你

【问题讨论】:

  • 如何启动您的应用程序,php bin/console server:start?如果这样做,正确的 url 应该是:http://localhost:8888/genus/something
  • 您是否尝试过从您的开发环境访问? localhost:8888/my_project/web/app_dev.php/genus/test 否则,请尝试清除缓存。
  • 我没有通过 php bin/console server:start 启动我的应用程序。我正在使用 MAMP,我认为我不必做其他事情
  • @fliim 我刚试过,我得到了错误没有为“GET /genus/test”找到路由,顺便说一下,在教程中,他们建议将“src”文件夹标记为 Sources Root,这会以某种方式产生影响吗?

标签: php symfony


【解决方案1】:

prod 环境中:配置信息被缓存,不会自动刷新。 意思是:

  • php 文件中的@nnotation 被缓存
  • .yml 文件被缓存
  • .xml 文件被缓存
  • *.twig 文件被缓存

您遇到的错误是您创建的新路由未缓存且无法被 prod 环境访问。

这意味着您要么必须每次都调用app/console cache:clear --env=prod,要么必须使用dev 环境,这在开发时要好得多。它也为 404 和 500 错误提供了更好的错误消息。

这意味着您必须使用app_dev.php 而不是app.php。 你可以试试

http://localhost:8888/app_dev.php/my_project/web/genus/test

【讨论】:

  • 我尝试了您的建议,但出现错误:未找到请求的 URL /app_dev.php/my_project/web/genus/test 在此服务器上未找到。顺便说一句,在教程中他们建议将“src”文件夹标记为 Sources Root,这会产生某种影响吗?
  • 你能做php app/console debug:router 看看你是否有你想要的路线吗?将“src”文件夹标记为 Sources Root 是一个 Phpstorm 功能,不是吗? IDE 与 symfony 无关
  • 我尝试了命令 php app/console debug:router 但没有用,然后我尝试使用 php bin/console debug:router。是的,我可以看到路线 app_genus_show ANY ANY ANY /genus/{genusName}
  • 如果你使用bin/console你使用的是symfony 3而不是symfony 2!
  • 我使用该命令是因为我在教程中看到了它。我检查了版本(symfony -v),我有 Symfony 安装程序(1.5.9),我得到了这个信息要使用最新的 Symfony 稳定版本在当前目录中创建一个名为 blog 的新项目,请执行以下命令:symfony new博客,以及更多选项,如 symfony new blog lts、symfony new blog 2.8 或 symfony new blog 3.0、symfony new blog 2.8.1 或 symfony new blog 3.0.1、symfony demo。我怎么知道我完成了安装?
猜你喜欢
  • 1970-01-01
  • 2015-07-29
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 2012-10-26
相关资源
最近更新 更多