Symfony控制器无法正常工作

时间:2016-10-20 16:42:12

标签: php symfony

我是symfony的新手,并开始按照网站上的说明学习。我创建了幸运数字控制器,但它没有像我希望的那样工作。

以下是我添加的LuckyController.php文件的代码。我在网址localhost/testing/web/lucky/number上收到 404错误页

<?php

// src/AppBundle/Controller/LuckyController.php
namespace AppBundle\Controller;

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

class LuckyController
{
    /**
     * @Route("/lucky/number")
     */
    public function numberAction()
    {
        $number = rand(0, 100);

        return new Response(
            '<html><body>Lucky number: '.$number.'</body></html>'
        );
    }
}   

我不确定我是否错过了一个步骤,或者我是否只是想创建控制器。我正在使用 Symfony 3.1标准版。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

嗯,您在请求中使用了生产环境。确保您的缓存清晰或使用开发环境:

localhost/testing/web/app_dev.php/lucky/number

答案 1 :(得分:1)

默认情况下,Symfony会将localhost / testing / web / lucky / number中的URL重写为localhost / testing / web / app.php / lucky / number来执行控制器。重写在web文件夹中的.htaccess中配置。 如果Apache忽略了.htaccess,则会导致上述问题。

如何检查Apache是​​否忽略.htaccess?

在.htaccess上添加测试行并转到URL。如果Apache使用.htaccess,则会导致错误,因为.htaccess语法错误。如果没有错误(仍然获得404),则Apache不使用.htaccess。

<强>解决方案

通常,Apache会忽略.htaccess文件,因为以下Apache配置AllowOverride none。检查虚拟主机配置并添加/修改AllowOverride All。

实施例

<Directory /var/www/site/example.com/web>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

PS:我找到了检查并修复.htaccess https://docs.bolt.cm/3.4/howto/making-sure-htaccess-works

的方法

答案 2 :(得分:0)

@Joshua Blevins很高兴看到你来到symfony并尝试它的第一个初学者代码。

您必须在此处更改位于项目的 web 文件夹中的app.php。打开并将f​​alse选项设置为true,它将使您的项目能够在生产环境中运行。

此外,symfony的每个控制器都从基本控制器扩展。

试试这个:

// src/AppBundle/Controller/LuckyController.php

// ...
// --> add this new use statement
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class LuckyController extends Controller
{
    // ...
} 

您还可以通过控制器中的echo "hello world!来测试您的溃败。

参考Create your First Page in Symfony