【问题标题】:Symfony 2 not rendering Welcome Page as expectedSymfony 2 未按预期呈现欢迎页面
【发布时间】:2016-10-25 12:55:40
【问题描述】:

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

不幸的是,我看到的只是“主页”这个词。以及窗口底部的工具栏。

我花了很多时间在网上搜索并找到了很多反映我经历的主题。然而,这些都没有得到回答。我发现了几个类似的问题,但没有一个提供的解决方案对我有用。我的 Apache Vhost 配置非常好(例如指向 web 文件夹),我的 PHP 配置也是如此。到目前为止,我已经在 Symfony 项目中完成了零编码,所以不可能是我造成了这个问题。 ;) 说真的,我真的完全不知道是什么可能导致页面呈现不正确。我可以看到源代码的头部没有加载一个 CSS 文件,这让我相信没有发生引导。但由于我对 Symfony 2 一点经验都没有,这只是我的猜测。 顺便说一句,我仔细检查了,Acme DemoBundkle 已安装。有人在某处提到文档中的欢迎页面正是显示了这一点。

如果你们有任何想法,请赐教,因为我真的很想试一试 Symfony 2。

[编辑]

今天早上我一直在深入挖掘它,尽管路由是正确和解析的,但他 app/Resources/views/default 已加载,它应该加载 src/Acme/DemoBundle/views/Welcome/ index.html.twig

我越来越接近解决方案。我会在解决问题后立即更新这篇文章。

【问题讨论】:

  • 你是怎么安装的?如果是作曲家,作曲家是否完成了他的工作?如果是这样,请告诉我,我会回答你的问题。需要先知道一些线索,否则就是摸黑了:)
  • 我使用了可执行逻辑:symfony new

标签: php css symfony rendering


【解决方案1】:

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

app/console cache:clear

app/console assets:install --env=dev

app/console assetic:dump --env=dev

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

【讨论】:

  • 谢谢。我试过了,但它并没有改变任何事情。 :/ app.php 和 app_dev.php 都没有改变。这真的让我很烦。
  • 那一定是你的虚拟主机配置有问题。检查您是否已正确设置:symfony.com/doc/current/cookbook/configuration/…
  • 这是一个非常简单和基本的配置。我非常怀疑这是这里的罪魁祸首,说真的。 :(
  • 你检查过 PHP 日志吗?启用 PHP display_errors 或检查日志以查看代码是否由于您的配置而在某处出现错误。你检查过权限吗? ( app/log 和 app/cache 应该是可写的)
  • 日志为空。是的,Display_errors 已启用,显示 E_ALL。尽管如此,没有显示一个错误。缓存和日志的权限很好。
【解决方案2】:

我不完全确定这是否是最佳做法,但至少我能够解决问题。 Symfony 总是加载 DefaultController,其中 indexAction 方法渲染了 default/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 有很大不同(虽然很好!),所以对你来说可能看起来是基本知识的东西对我来说不是。 :)

【讨论】:

    【解决方案3】:

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

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

    来自

    resource: @AppBundle/Controller/
    

    resource: @AcmeDemoBundle/Controller/
    

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

    我现在才发现这个,因为我正在重新学习 symfony(我上次使用它时,它还在 1.4)

    干杯!

    【讨论】:

    • @TimOgilvy 很遗憾,这次他们完全删除了 acmedemobundle。您只能访问 localhost:8000/app/example 来访问默认主页。如果您尝试仅访问 localhost:8000/,它甚至会给您错误 404 not found
    • 我猜因为 Symfony 本身并不是一个应用程序,所以它为空并且“开箱即用”失败确实有点道理......但他们还没有更新文档反映这一点。我可能应该尝试找到 github 页面或其他东西向他们发送一些反馈
    • @TimOgilvy 是的,但是很高兴看到一些功能的某种基本实现,让新开发人员了解如何使用框架的一些基本功能。或者他们也可以使用 symfony new 命令的附加参数来使用示例项目还是完全空的项目
    【解决方案4】:
    1. 更改路由路径

    2. 在隐身模式下工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 2017-02-23
      • 2018-10-01
      • 2014-09-29
      • 2017-01-26
      • 1970-01-01
      相关资源
      最近更新 更多