php - SImple Symfony2 'Front Page' Controller 、路由器和模板。为什么我仍然看到欢迎页面?

标签 php symfony twig

我刚开始使用 Symfony 2.7.3。

我一直在阅读“这本书”,试图将对我来说新的概念拼凑起来。

我整理了我的第一个简单示例 -- 我的“首页”。

使用下面的代码,当我导航到

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”,我需要在此处修复什么?

./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 %}

最佳答案

Symfony 在默认安装中包含一个 AppBundle。该包包含一个默认控制,其中包含“/”的默认操作。更改此 Controller 操作以处理其他路径,然后将执行对应于“frontpage”的 Controller 操作。

在 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').'/..'),
        ));
    }
}

为“/”路径声明了两次相同的配置。 AppBundle 获得优先权是因为

app:
    resource: "@AppBundle/Controller/"
    type:     annotation

在你的 routing.yml 文件中(很可能)在你的路由之前声明的行。

关于php - SImple Symfony2 'Front Page' Controller 、路由器和模板。为什么我仍然看到欢迎页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323398/

相关文章:

php - 我如何在 mysql 查询中使用变量

php - 无法向mysql数据库插入9k字

symfony - PHP basename Twig 等价物

symfony - 在 Twig 模板中输出月份列表的最佳方式?

php - MySQL InnoDB - 对事务感到困惑

php - PostgreSQL 重复行

php - 安装 Composer 时出错 - curl : (23) Failed writing body (0 ! = 16133)

php - 如何限制 Doctrine2 中的关联实体结果?

php - 需要 mySQL 到 SQL 转换帮助

php - Symfony 2 根据用户代理属性加载不同的模板