Я отображаю страницу с большим количеством фреймов (панели содержимого XHR через dojo). Это делается с помощью запроса к IndexController
, который устанавливает области «верхний, левый, правый, центр, нижний колонтитул», за исключением того, что центр не заполняется содержимым. Это, в свою очередь, устанавливается вызовом PaneController
в menu.onclick. Предостережение; Служба индексации поисковых систем не получает содержимое центральной области. Я хочу обойти AJAX-загрузку центра, если пользователь входит через /index/index.
Соответствующие фрагменты из IndexController:
class IndexController extends Zend_Controller_Action {
public function indexAction() {
$this->indexModel = $this->view->indexModel = new Application_Model_Index();
// Goal is to render "/pane/main/" action and capture the HTML
$this->view->mainPane = (string) $this->renderPaneMain();
return $this->render();
}
public function renderPaneMain() {
// ActionStack ?
// action() ?
return $HTML;
}
}
Соответствующие вещи в Pane
class PaneController extends Zend_Controller_Action {
public function preDispatch() {
// will only return a contentpane, dont render layout
if ($this->getRequest()->isXmlHttpRequest()) {
$this->_helper->layout()->disableLayout();
$this->view->doLayout = true;
}
}
public function mainAction() {
this.render("main.phtml");
}
public function init() {
$this->panesModel = new Application_Model_Panes();
$variant = $this->getRequest()->getParam('variant', '');
// routing variables need to be set, how?
if (empty($variant))
$this->_redirect('/');
}
}
По сути, мне нужно, чтобы PaneController не отображал глобальный макет, а вызывал его файл представления .phtml после того, как он был настроен с соответствующими записями модели и т.д.
Любые идеи относительно того, как я могу добиться этого в наиболее эффективной форме?