小编Jon*_*ell的帖子

Symfony2:使用侦听器更改渲染视图

我想在Symfony2项目中的不同上下文中呈现不同的视图.我正在使用多个路由进行相同的操作,我想渲染一个不同的页面(视图),但使用相同的控制器.例如,我有:

@Route("/articles/show", name="articles_show")
@Route("/mobile/articles/show", name="mobile_articles_show")
Run Code Online (Sandbox Code Playgroud)

两个路由都使用相同的操作:ArticlesController:showAction(),但应该渲染2个不同的模板(对于移动用户和常规用户).

show.html.twig
mobile.show.html.twig
Run Code Online (Sandbox Code Playgroud)

我不想在我的控制器中使用if语句或其他任何东西,所以我创建了一个监听器(类似于preExecute函数)

这是一个定义我的监听器的部分或我的config.yml

services:
    controller.pre_execute_listener:
        class: MyProject\MyBundle\Listener\ControllerListener
        arguments: ["@security.context", "@doctrine", "@router", "@session"]
        tags:- { name: kernel.event_listener, event: kernel.controller, method: preExecute }
Run Code Online (Sandbox Code Playgroud)

我正在考虑在监听器preExecute函数中做类似的事情:

if(substr($route,0,7) == 'mobile_'){
    $view = 'mobile.'.$view;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法找到一种方法来获取$ view或"动态"更新视图,就在渲染之前.

我希望我的问题很清楚,提前谢谢,欢迎任何想法:)

J.

rendering view listener symfony

8
推荐指数
1
解决办法
1万
查看次数

如何在LifeRay 6.2中添加资产发布者配置选项

使用资产发布者时,您可以在资产发布者配置面板中更改" 显示设置".如果选择摘要显示模板,则可以使用新选项(抽象长度).如何在我的应用程序显示模板(ADT)中添加这样的选项?

摘要模板的示例:

在此输入图像描述

我的自定义模板示例(抽象长度不可用):

在此输入图像描述

liferay liferay-6

6
推荐指数
1
解决办法
2612
查看次数

标签 统计

liferay ×1

liferay-6 ×1

listener ×1

rendering ×1

symfony ×1

view ×1