【问题标题】:Routing with Symfony3 is not working使用 Symfony3 的路由不起作用
【发布时间】:2016-05-26 11:45:36
【问题描述】:

我在这里找到了关于 Symfony 3 路由问题的所有主题,但它们对我没有帮助。 所以我的问题是我的控制器没有被访问。 这是我的代码:

routing.yaml:

app:
    path: /test
    defaults: {_controller: AppBundle:Lucky:number}

workspace/test/src/AppBundle/Controller/LuckyController.php:

<?php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class LuckyController extends Controller
{
    public function numberAction()
    {
        $number = rand(0, 1000);
        return new Response(
            '<html><body>Lucky number: '.$number.'</body></html>'
        );
    }
}

打电话时:http://test.local/test 我得到一个 404 返回,并且用 bin/console cache:clear 清除缓存没有帮助。

【问题讨论】:

  • 尝试运行bin/console debug:router 看看您的路由是否已加载。
  • 响应是:... app ANY ANY ANY /test
  • test.local/app_dev.php/testtest.local/web/app_dev.php/test 有效吗?您确定网址正确吗?
  • test.local/web/app_dev.php/test -> 一样的404,test.local/app_dev.php/test -> 有效 谢谢大家的帮助,但是为什么我要写路径像那样?为什么我不能只写 test.local/test ????
  • 也许您的 .htaccess 文件不起作用。你在用阿帕奇吗?另请注意,来自 symfony 标准的默认 .htaccess 指向 app.php,而不是 app_dev.php。是否也在生产中加载路由?

标签: php routing http-status-code-404 yaml symfony


【解决方案1】:

如果您对 YML 不太满意,为什么不选择 Annotation?这可能是您的控制器类使用注释的样子:

    <?php
        namespace AppBundle\Controller;
        use Symfony\Bundle\FrameworkBundle\Controller\Controller;
        use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; //<== BE SURE YOU IMPORTED THE "ROUTE" CLASS
        use Symfony\Component\HttpFoundation\Response;


        /**
         * Lucky controller.
         *
         * @Route("/")
         */
        class LuckyController extends Controller {


            /**
             *
             * @Route("/test", name="lucky_test")
             */
            public function numberAction() {
                $number = rand(0, 1000);
                return new Response(
                    '<html><body>Lucky number: '.$number.'</body></html>'
                );
            }
        }

【讨论】:

  • Ty,我已经试过了,也没用。看起来我输入了错误的 URL,正如您在上面的 cmets 中看到的那样。此外,我不喜欢使用注释进行路由,我想保持分开。
  • @user3741232 好的……把东西分开是非常理想的 ;-) 再次;我也看不出你的 YML 路由有什么问题。但是,假设您在 Localhost 上,即使使用您的 YML 路由,您也应该能够通过以下方式访问该页面:localhost/doc_root/app_dev.php/test 除非您采取了其他方式……也许在 htaccess 或 app_dev 中.php 文件???
猜你喜欢
  • 1970-01-01
  • 2014-10-23
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
相关资源
最近更新 更多