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

