我有一个带有单个应用程序frontend
的symfony 1.4项目。此应用程序具有单个模块book
,其中包含单个操作index
。
我有两个模板用于索引操作:indexSuccess.mobile.php
和indexSuccess.html.php
。该操作将设置格式以便调用这些模板中的一个或另一个。
我想为这两个模板中的每一个使用不同的布局:layout.mobile.php
和layout.html.php
。文件apps/frontend/modules/book/config/view.yml
文件用于指定要使用的布局以及布局中包含的CSS和JavaScript文件。
由于每个模块只能有一个view.yml
文件,如何配置view.yml
以便indexSuccess.mobile.php
使用layout.mobile.php
并加载相应的CSS和JS文件,同时indexSuccess.html.php
使用layout.html.php
并加载其相应的CSS和JS文件?
我想使用布局,因为我最终会向此模块添加更多动作/模板。
答案 0 :(得分:4)
您可以使用行动的setLayout()
方法来实现此目的。
对于css和js文件,更新,您也可以使用该操作(调用sfWebResponse::addStylesheet()
和sfWebResponse::addJavascript()
)。
如果您绝对想要从view.yml
完成所有这些操作,最好的方法是更改模板名称(在操作中返回不同的后缀)
答案 1 :(得分:0)
我没有测试过,但似乎就是这样:
<?php
// in indexSuccess.mobile.php
decorate_with('layout.mobile');
答案 2 :(得分:0)
我可能会迟到回答这个问题,但我认为这可能对某人有所帮助,因为如果他们被要求像我一样处理这些旧版本(例如 symfony 1.4),他们的运气不好。
您可以为每个动作指定布局文件。所以解决方案是将 layout 和 my_layout 放在 apps/frontend/templates
目录中,并在 apps/frontend/modules/book/config/view.yml
中定义布局配置,如下所示:
indexSuccess:
layout: my_layout
mobileSuccess:
layout: layout
有关详细信息,请查看 this 链接中的“布局配置”