Как установить различные шаблоны пути с помощью Zend Framework? - PullRequest
1 голос
/ 21 марта 2012

Я нахожу тип устройства с использованием WURFL. Также я написал плагин для установки шаблона для мобильного просмотра. Пожалуйста, посмотрите на код ниже.

class ZC_Controller_Plugin_Mobile extends Zend_Controller_Plugin_Abstract 
{
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { 

    $bootstrap  = Zend_Controller_Front::getInstance()->getParam("bootstrap"); 
    $useragent  = $bootstrap->getResource("useragent");     
    $device     = $useragent->getDevice(); 

    Zend_Registry::set("useragent", $useragent);
    Zend_Registry::set("device", $device);

    /**
     * @todo change this to be Mobile 
     */

    //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 we check to see if a mobile version of the template exists.  if it does then we change the view suffix
         * this allows us to load the mobile view if it exists and the defgault view if it doesnt. 
         */
        $base       = APPLICATION_PATH . "/views/scripts/";
        $mobile     = $base .  $request->getControllerName() . "/" . $request->getActionName() . ".mobile.phtml";

        if(is_readable($mobile)) {
            Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer')->setViewSuffix('mobile.phtml');      
        } 

    }
}

}

Также я создал два шаблона в application/layouts/scripts/ 1.layout.phtml (вид рабочего стола) 2.mobile.phtml (Мобильный просмотр) Когда я запускаю страницу индекса, у меня есть представление, основанное на типе устройства. Теперь структура файла похожа на

application/view/scripts/index/

1.index.phtml 2.index.mobile.phtml

пока все хорошо, теперь я хочу разделить путь просмотра в зависимости от типа устройства. так что у меня будет путь что-то вроде

application/view/scripts/index/index.phtml (Desktop view)
application/mobile/view/scripts/index/index.phtml (Mobile view)

Это будет лучше при разработке сайта на основе представления.

Добрый совет по этому поводу.

1 Ответ

1 голос
/ 21 марта 2012

Вы можете использовать Zend_Action_Helper_ViewRenderer::setViewBasePathSpec()

Документация API

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