現在、私は zend フレームワーク アプリケーションを持っています。それを wurfl ユーザー エージェントと統合しているので、モバイル バージョンとデスクトップ バージョンを切り替えることができます。私のプラグインはライブラリにあります。
<?php
class Zc_Controller_Plugin_TemplatePicker extends Zend_Controller_Plugin_Abstract
{
protected $useragent;
public function postDispatch(Zend_Controller_Request_Abstract $request)
{
$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
$this->useragent = $bootstrap->getResource('useragent');
if($this->useragent->getDevice()->getType() == 'mobile')
{
Zend_Layout::getMvcInstance()->setLayout('mobile');
}
}
}
そして今、スクリプトファイルmobile.phtmlとlayout.phtmlに2つのレイアウトがあります。モバイルレイアウトに使用できるようにコントローラー機能の一部を使用できますか?また、ブートストラップにレイアウトローダーがあります
protected function _initLayoutHelper()
{
// $front = Zend_Controller_Front::getInstance();
// $front->registerPlugin(new Zc_Controller_Plugin_TemplatePicker());
if(!stristr($_SERVER['REQUEST_URI'], '/admin')){
$this->bootstrap('frontController');
}
$layout = Zend_Controller_Action_HelperBroker::addHelper(new Zc_Controller_Action_Helper_LayoutLoader());
}
そしてレイアウトローダーコードは
<?php
class Zc_Controller_Action_Helper_LayoutLoader extends
Zend_Controller_Action_Helper_Abstract
{
public function preDispatch(){
$bootstrap = $this->getActionController()->getInvokeArg('bootstrap');
$config = $bootstrap->getOptions();
Zend_Registry::set('config', $config);
$module = $this->getRequest()->getModuleName();
$controller = $this->getRequest()->getControllerName();
$action = $this->getRequest()->getActionName();
$layoutScript = "layout";
if (isset($config[$module]['resources']['layout']['layout'])) {
$layoutScript = $config[$module]['resources']['layout']['layout'];
}
$this->getActionController()->getHelper('layout')->setLayout($layoutScript);
}
}
2つの別々のレイアウトを持つ1つのコントローラクラスを持つことができるように、どこを微調整する必要がありますか?ありがとう!!