Symfony 2未按预期呈现欢迎页面

时间:2014-12-11 07:57:00

标签: php css symfony rendering

使用Zend Framework 2一段时间后,我决定昨天尝试使用Symfony 2。我的Debian Jessie测试服务器上的安装顺利进行,并在评论出config.php中的localhost限制(当然还有app_dev.php)后,我能够完成基本配置步骤(即使我已经在根据yaml文件以前)。 加载欢迎页面后,当我发现它与文档让我的期望大不相同时,我感到非常惊讶。

不幸的是,我所看到的只是"主页。"以及窗口底部的工具栏。

我花了很多时间在网上搜索,发现了一个充满反映我经验的主题的手。但这些都没有得到解答。我发现了几个类似的问题,但没有一个提供的解决方案适合我。我的Apache Vhost配置绝对正常(例如指向web文件夹),我的PHP配置也是如此。到目前为止,我已经在Symfony项目中进行了零编码,所以导致问题的我不可能。 ;)但是说真的,我真的完全不知道可能导致页面呈现错误的原因。我可以看到源代码的头部没有加载单个CSS文件,这使我相信没有发生自举。但由于我对Symfony 2没有丝毫经验,这只是我的猜测。 顺便说一句,我仔细检查,Acme DemoBundkle已安装完毕。有人在某处提到文档中的欢迎页面正是如此。

如果你们有任何想法,请赐教,因为我真的想给Symfony 2一个机会。

[编辑]

今天早上我已经深入挖掘它了,尽管路由正确并且已经解析,但是app / Resources / views / default被加载了,它应该加载src / Acme / DemoBundle / views /欢迎/ index.html.twig

我越来越接近解决方案了。我一解决问题就立即更新这篇文章。

4 个答案:

答案 0 :(得分:3)

我最好的猜测是通过命令行执行:

app/console cache:clear

app/console assets:install --env=dev

app/console assetic:dump --env=dev

考虑到您正在进入开发app_dev.php前端控制器。 这将构建您的CSS资产。试试看。

答案 1 :(得分:0)

我不完全确定这可以被认为是最佳做法,但至少我能够解决这个问题。 Symfony总是加载DefaultController,indexAction方法呈现默认的/ index.html.twig模板:

{% extends 'base.html.twig' %}

{% block body %}
    Homepage.
{% endblock %}

由于我无法找到任何其他方法使AcmeDemo欢迎页面成为要加载的默认页面,我改变了

* @Route("/", name="homepage"

* @Route("/default", name="homepage"
src / AppBundle / Controller / DefaultController.php

中的

我几乎可以肯定,必须有一种方法可以将任何其他页面配置为默认显示,而无需更改defaultController,但我还没弄清楚如何。

[编辑]

好吧,明白了。我将我对 DefaultController 所做的更改还原并改进了 WelcomeController

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
.
.
.
class WelcomeController extends Controller
{
    /**
     * @Route("/", name="_welcome")
     .
     .
     .
}

因此在 src / Acme / DemoBundle / Resources / config / routing.yml 中:

_welcome:
    resource: "@AcmeDemoBundle/Controller/WelcomeController.php"
    type:     annotation

现在它的工作完全正常,没有对DefaultController进行任何更改,我认为 - 这远非最佳实践,因为它可能是核心文件。

就像我说的那样,我对Symfony 2完全不熟悉,它与Zend Framework有很大的不同(虽然好!),所以对你来说可能看起来像基本知识,对我来说并不适合。 :)

答案 2 :(得分:0)

我也遇到了和你一样的问题。似乎创建项目生成器的开发人员在部署应用程序之前忘记设置routing.yml。

要解决此问题,只需更改app/config/routing.yml

即可

resource: @AppBundle/Controller/

resource: @AcmeDemoBundle/Controller/

它只会更改默认控制器以在主页上调用,没有什么可能危及symfony项目的完整性。

我刚刚发现了这个,因为我正在重新学习symfony(我最后一次使用它,它仍然是1.4)

干杯!

答案 3 :(得分:0)

  1. 更改路由路径

  2. 以隐身模式工作