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

Php 如何将数据从控制器Foo传递到控制器栏中的视图?,php,model-view-controller,zend-framework,Php,Model View Controller,Zend Framework,在zend中,我感兴趣的是将数据从一个控制器传递到另一个控制器中的视图 例如,我有一个搜索控制器,其目的是使用搜索模型来查询SOLR,我想让索引控制器从视图调用它(通过ajax或其他方式),并让搜索控制器将数据返回到该视图。这可行吗?还有更好的方法吗 提前感谢。如果你想通过AJAX实现,那么你只需要让客户端脚本(我猜是javascript)启动一个对url的请求,该url对应于你想要执行的搜索。您可能会将搜索控制器/操作配置为使用上下文开关,以便它以客户端代码可以使用的格式(我猜是json或xm

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


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


提前感谢。

如果你想通过AJAX实现,那么你只需要让客户端脚本(我猜是javascript)启动一个对url的请求,该url对应于你想要执行的搜索。您可能会将搜索控制器/操作配置为使用上下文开关,以便它以客户端代码可以使用的格式(我猜是json或xml)交付结果

这种方法的缺点包括:发出两个完整请求(包括HTTP开销)以获取数据;没有js,客户端将一无所获

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

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


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

“搜索控制器将数据返回到该视图”没有意义。。。您不会将任何内容返回到视图中,除非使用视图帮助器或在另一个视图中呈现某些视图。如果使用AJAX,您可以调用搜索控制器(从URL)并获取结果,然后使用jQuery或任何其他Javascript框架来构建结果。