Я хочу управлять с помощью одного контроллера некоторыми другими контроллерами с их собственными моделями (не _forward)

Я новичок в zend framework, и это мой первый вопрос, который я задал в Интернете... извините за мой плохой английский! У меня возникла проблема, и через несколько часов я выпрыгнул бы из окна ;) У меня есть один контроллер A, затем мне нужно 4 других контроллера (B, C, D, E), чтобы вызвать свои модели и дать ответ контроллеру. A. Контроллер 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 вызывает функцию только после текущей функции. Кто-нибудь может мне помочь? Есть ли шанс, или надо все в один Контроллер ставить?

Надеюсь и спасибо за помощь

С уважением Том


person Tomtom33    schedule 07.05.2011    source источник


Ответы (1)


ZF не разработан как среда HMVC, но вы можете справиться с этим. Одним из способов может быть использование помощника/плагина стека действий. Ознакомьтесь с документацией: http://framework.zend.com/manual/en/zend.controller.actionhelpers.html

Вы должны иметь возможность вернуть html из представлений этих контроллеров. Однако я не уверен, насколько масштабируемым является этот метод, если он используется в целом для имитации HMVC.

person lucian303    schedule 09.05.2011
comment
Спасибо за ответ! Я слышал о том, что Zend не использует концепцию hmvc. Это была моя большая ошибка при использовании Zend Framework. Я думаю, что делать это для моего бакалавриата - неправильный путь. Одна часть моей работы — показать, как использовать Zend framework (mvc). Итак, я стянул все в один контроллер, и это произошло :) спасибо! С уважением, Том - person Tomtom33; 09.05.2011