如何将数据从Controller Foo传递到控制器栏中的视图?

时间:2011-06-10 04:31:47

标签: php model-view-controller zend-framework

在zend中,我有兴趣将数据从一个控制器传递到另一个控制器中的视图。

例如,我有一个搜索控制器,其目的是使用搜索模型来查询SOLR,我希望索引控制器从视图中调用它(通过ajax或其他方式)并让搜索控制器将数据返回到视图。这可行吗?还有更好的方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果您想通过AJAX执行此操作,那么您只需要让您的客户端脚本(javascript,我猜)会向您希望执行的搜索对应的网址发起请求。您可能会将搜索控制器/操作配置为使用上下文切换,以便以客户端代码可以使用的格式以格式(json或xml,我猜)提供结果。

这种方法的缺点包括:发出两个完整的请求,包括HTTP开销,以获取数据;没有js的客户什么都得不到。

另一种方法是让索引视图脚本调用Action view helper - 使用$this->action($action, $controller, $module, $params)调用 - 直接获取数据。同样,您可能希望使用上下文切换或参数标记,这样您就不会为完整的站点布局提供HTML,而只提供搜索结果的HTML。

最后,您可以将搜索功能推送到服务类中,以便索引控制器和搜索控制器可以独立使用它。然后控制器只是以正常方式将这些结果分配给视图。

就个人而言,我倾向于选择服务方式。