Zend один контроллер много просмотров - PullRequest
0 голосов
/ 04 июня 2010

Когда я изначально создавал свой сайт, он работал только с одним интерфейсом, но теперь мне нужно обрабатывать много интерфейсов.

Я могу определить, какой сайт отправлять для каждого запроса, и изолировать каждый сайт от других, но все сайты имеют одинаковые представления.

Есть ли способ, которым я могу визуализировать разные виды с одного контроллера?

Я думаю что-то вроде:

application
            controller
            model
            site_1_view
            site_2_view

Возможно ли это?

Ответы [ 5 ]

0 голосов
/ 13 июня 2010

Это было очень просто - я обнаружил, что могу установить базовый путь вида в своем конструкторе:

$this->view->setBasePath("../application/site_1_view/views");

Таким образом, в public/index.php я определяю URL-адрес, задаю его в сеансе, определяю имя из моей БД, затем использую имя для установки базового пути:

$this->view->setBasePath("../application/".$siteName."/views");

Итак, структура приложения теперь:

 application
            controllers
            model
            site_1_view
                         views
                                scripts
                                         controllerName
                                                        ActionName 

            site_2_view
                         views
                                scripts
                                         controllerName
                                                        ActionName  
0 голосов
/ 05 июня 2010

Просто идея: определить, какой сайт в настоящее время просматривается, а затем указать Zend_View использовать сценарии для этого конкретного сайта, установив $view->setScriptPath(/path/to/site1/scripts/);

Редактировать: я могу ошибаться в этом, но лучшее место для установки этого - плагин контроллера в методе preDispatch, так как в то время вы знали, какой модуль / контроллер / действие был запрошен, но еще не отправлен: http://framework.zend.com/manual/en/zend.controller.plugins.html

0 голосов
/ 04 июня 2010

Или:

public function myAction() 
{
    return $this->otherAction();
}

public function otherAction() 
{

}
0 голосов
/ 04 июня 2010

добавить новый путь сценариев для просмотра LIFO стек

0 голосов
/ 04 июня 2010
$this->view->render('script.phtml'); 

должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...