让我们假设我们OrderController
控制器有三个操作/页面:orderDetailsAction
,orderHistoryAction
,orderCustomerDetailsAction
每个动作都返回一些HTML。
现在我想要同时包含所有3个html片段的页面,但是我不想做3个ajax调用来完成这个。
我正在创建其他控制器的操作方法(例如orderSummaryAction
)。这个方法应该包含这样的东西。
public function orderSummartyAction {
ob_start();
Application::factory()->run('/order/details');
Application::factory()->run('/order/history');
Application::factory()->run('/order/customer_details');
$out = ob_get_clean();
$this->getResponse()->setHtml($out);
}
是否有任何框架在做这样的事情或者可能是不好的做法(那么什么是更好的做法)?
谢谢!
UPD:或者我们可以传递不是字符串url,而是路由来创建新的Application实例。这将是更好的,imho。
答案 0 :(得分:1)
我想说,问题的原因是无效的MVC实现。
生成HTML不是控制器的责任。相反,输出应该由 view 实例创建 - 一个处理表示逻辑和多个模板的对象。与RoR一直试图为我们提供的信息相反 - 视图不是模板。
在适当的MVC中,控制器负责直接根据用户输入或某种Request
实例更改模型层和所选视图的状态
另外,两个旁注:
答案 1 :(得分:0)
Symfony2使用子请求来调用多个控制器。 您可以在此处{嵌入控制器'http://symfony.com/doc/current/book/templating.html
下找到更多详细信息