我想用一个控制器控制其他一些控制器,用他们自己的模型(不是_forward)


I want to control with one Controller some other Controllers with their own models (not _forward)

我是zend框架的新手,并且这是我在互联网上问的第一个问题......对不起,我的英语不好!我遇到了一个问题,几个小时后我会跳出窗户;)我有一个控制器 A,然后我需要另外 4 个控制器(B、C、D、E)来调用它们的模型并将答案交给控制器 A。

可悲的是,Zend_Framework不允许这样的事情发生:

Class Arcticle_SteuerController {
    public function showAction() {
    .....
          $text = new Article_TextController();
          $opt = new Article_OptionController();
          $dates =  new Article_DatesController();
          $varText = $text->showTextAction();
          $varOpt = $opt->showOptAction();
          $this->view->varText;
          $this->view->varOpt;
            ....
    ....
    }
}

我有一个问题,将所有内容放在一个控制器中,因为每个控制器都有自己的模型,我认为这是错误的设计。所以我想尝试从另一个类调用另一个函数。

我发现了一些东西,并不是每个动作都需要一个视图......喜欢这个:

$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
$viewRenderer->setView($this->view)
             ->setNoController(true);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);

问题是_forward只在当前函数之后调用函数。有人可以帮助我吗?是否有机会,或者我必须将所有内容放在一个控制器中?

希望和感谢帮助

最好的问候汤姆

ZF 不是作为 HMVC 框架设计的,但你可以做到这一点。一种方法可能是使用操作堆栈帮助程序/插件。查看文档:http://framework.zend.com/manual/en/zend.controller.actionhelpers.html

您应该能够从这些控制器的视图中获取 html。但是,我不确定如果整体使用此方法来模拟HMVC,则此方法的可扩展性如何。