Я не могу найти решение моей проблемы нигде, будь то на SO или в документации по Zend.
В основном у меня есть эта настройка:
Я создал плагин, который использует Zend_Http_UserAgent и WURFL для определения, использует ли пользователь мобильный телефон. Это сделано в предзапуске. Это прекрасно работает
Теперь я хочу изменить каталог скриптов вида, если пользователь использует мобильный телефон.
В идеале в идеальном мире я хотел бы попробовать загрузить мобильную версию представления, если оно существует, если нет, то загрузить представление по умолчанию. Но если я смогу заставить 2 работать хотя бы тогда, я буду счастлив.
Я более чем озадачен тем, как я это делаю. Я видел, что мог бы использовать:
$ view = Zend_Controller_Action_HelperBroker :: getStaticHelper ('viewRenderer') -> view;
$ view-> setBasePath (APPLICATION_PATH. '/ mobile_views /');
Но похоже, что это не то, что я ожидаю, плюс это происходит в postDispatch, когда я думаю, что подобные вещи должны происходить в preDispatch?
Вот мой текущий плагин:
<?php
класс SQ_Plugins_Mobile extends Zend_Controller_Plugin_Abstract {
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $flag) {
$bootstrap = Zend_Controller_Front::getInstance()->getParam("bootstrap");
$useragent = $bootstrap->getResource("useragent");
$device = $useragent->getDevice();
Zend_Registry::set("useragent", $useragent);
Zend_Registry::set("device", $device);
echo $device->getType() . " is the type of device";
if($device->getType() != "mobile") {
/**
* Set the layout to be mobile, here we make sure we streamline what is loaded
* so as to not load things that arent needed.
*/
Zend_Layout::getMvcInstance()->setLayout("mobile");
/**
* Here i wish to change the view path to be APPLICATION_PATH . "/mobile_views/"
* @todo Change the view script path
*/
}
}
public function postDispatch(Zend_Controller_Request_Abstract $request) {
/**
* Maybe i have to change the view script path here?
* @todo change the viewscript path if we're using a mobile
*/
// Get the current view
$view = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view;
$view->setBasePath(APPLICATION_PATH . '/mobile_views/');
echo "kl;kl;kjhkl;jhlkjhjklhkl;h k;hi";
}
}