【发布时间】:2012-08-15 13:52:42
【问题描述】:
我想在我的 Symfony2 项目中在不同的上下文中呈现不同的视图。 我正在为相同的操作使用多个路由,并且我想呈现不同的页面(视图)但使用相同的控制器。 例如我有:
@Route("/articles/show", name="articles_show")
@Route("/mobile/articles/show", name="mobile_articles_show")
两条路线都使用相同的操作:ArticlesController:showAction(),但应该呈现2个不同的模板(移动用户和普通用户)。
show.html.twig
mobile.show.html.twig
我不想在我的控制器中使用 if 语句或其他任何东西,所以我创建了一个侦听器(类似于 preExecute 函数)
这是定义我的 listener
的部分或我的 config.ymlservices:
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 }
我正在考虑在侦听器 preExecute 函数中做类似的事情:
if(substr($route,0,7) == 'mobile_'){
$view = 'mobile.'.$view;
}
很遗憾,在渲染之前,我找不到获取 $view 或“即时”更新视图的方法。
我希望我的问题足够清楚,在此先感谢,欢迎任何想法:)
J.
【问题讨论】:
标签: view symfony rendering listener