如何将数据从Controller Foo传递到Controller Bar中的视图?

问题描述

| 在zend中,我对将数据从一个控制器传递到另一个控制器的视图感兴趣。 例如,我有一个搜索控制器,其目的是使用搜索模型来查询SOLR,并且我希望索引控制器从视图中(通过ajax或其他方式)调用它,并使搜索控制器将数据返回到该视图。那可行吗?还有更好的方法吗? 提前致谢。     

解决方法

        如果要使用AJAX进行操作,则只需要让客户端脚本(我猜是javascript)向与您要执行的搜索相对应的url发起请求即可。您可能已将搜索控制器/操作配置为使用上下文切换,以便它以客户端代码可使用的格式(json或xml)传递结果。 这种方法的缺点包括:进行两个完整的请求(包括HTTP开销)以获取数据;没有js的客户将一无所获。 另一种选择是让索引视图脚本调用“动作”视图帮助程序(使用
$this->action($action,$controller,$module,$params)
进行调用)以直接获取数据。同样,您可能希望使用上下文切换或param标志,以便您不提供完整网站布局的HTML,而只提供搜索结果的HTML。 最后,您可以将该搜索功能下推到服务类中,以便Index控制器和Search控制器可以独立地利用它们。然后,控制器仅以正常方式将这些结果分配给视图。 就个人而言,我倾向于采用服务方式。