简单的Symfony2' Front Page'控制器,路由器和模板。为什么我仍然会看到欢迎页面?

时间:2015-09-01 04:12:16

标签: php symfony twig

我刚开始使用Symfony 2.7.3。

我一直在阅读"书",试图将新到我的概念拼凑在一起。

我已经把我的第一个简单例子放在了一起 - 我的前页'。

根据以下代码,我'期待看到一个空白页面只有单词" TEST TEST"当我导航到

http://example.com/app_dev.php/

相反,我看到了标准的Symfony欢迎页面,

Welcome to Symfony 2.7.3

Your application is ready to start working on it at: /srv/www/test1/symfony/
What's next?

Read Symfony documentation to learn
How to create your first page in Symfony

我无法弄清楚为什么我仍然会看到这一点,而不是我的" TEST TEST"。

我正盯着这个,并且知道我必须错过很简单的东西应该是显而易见的: - /但是什么?盯着它看起来更没有让我到任何地方。

为什么我没有看到" TEST TEST",我需要在这里解决什么?

./app/config/routing.yml
    _frontpage:
        path:      /
        defaults:  { _controller: AppBundle:FrontPage:index }


./src/AppBundle/Controller/FrontPageController.php
    <?php
    namespace AppBundle\Controller;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
    class FrontPageController extends Controller
    {
        /**
         * @Route("/", name="index")
         */
        public function indexAction() {
            return $this->render('default/page-front.html.twig');
        }
    }

./app/Resources/views/base.html.twig
    <!DOCTYPE html>
    <html>
        <head>
            <title>{% block title %}this title{% endblock %}</title>
            {% block meta %}
                <meta charset="UTF-8" />
            {% endblock %}
            {% block stylesheets %}{% endblock %}
        </head>
        <body>
            {% block body %}{% endblock %}
            {% block javascripts %}{% endblock %}
        </body>
    </html>

./app/Resources/views/default/page-front.html.twig
    {% extends 'base.html.twig' %}
    {% block title %}Changed Title{% endblock %}
    {% block body %}
        <div><p>TEST TEST</p></div>
    {% endblock %}
    {% block stylesheets %}
    {% endblock %}

2 个答案:

答案 0 :(得分:2)

Symfony默认安装中包含AppBundle。此捆绑包含一个默认受控对象,其中包含&#39; /&#39;的默认操作。更改此控制器操作以处理另一个路径,然后您的控制器操作对应于&#39; frontpage&#39;将被执行。

在AppBundle \ Controller \ DefaultController中,将indexAction更改为gien

class DefaultController extends Controller
{
    /**
     * @Route("/default", name="homepage")
     */
    public function indexAction(Request $request)
    {
        // replace this example code with whatever you need
        return $this->render('default/index.html.twig', array(
            'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..'),
        ));
    }
}

对于&#39; /&#39;两次声明了相同的配置。路径。由于

,AppBundle正在获得优先权
app:
    resource: "@AppBundle/Controller/"
    type:     annotation
您的routing.yml文件中的

行,最有可能在您的路线之前声明。

答案 1 :(得分:0)

既然你说你从Symfony开始,建议的路径就是删除indexAction() DefaultController类中AppBundle方法的内容并添加你自己的逻辑。

没有什么是&#34;硬连线&#34;在Symfony中,通常建议使用AppBundle + DefaultController +名为homepage的路由来定义应用程序的主页。