2010-06-04 9 views
0

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

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

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

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

application 
      controller 
      model 
      site_1_view 
      site_2_view 

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

+0

Это может стать неуправляемым очень быстро. Можете ли вы привести пример того, какие вещи будут отличаться для разных сайтов? –

ответ

0

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

$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

Или:

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

public function otherAction() 
{ 

} 
+0

стали я излишним действия между сайтами, которые не являются моей целью – shereifhawary

0

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

0

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

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