私はクライアントのフロントエンドにイメージローテーターを備えた派手なページを持っています。Zend Frameworkで複数のレイアウトを使用できますか?
バックエンドの場合、私は別のレイアウトをしたいです。私は複数のレイアウトを持つことができますか?要求に基づいて、それらを切り替えることそれほど単純ではないですが、
少しヒントが
私はクライアントのフロントエンドにイメージローテーターを備えた派手なページを持っています。Zend Frameworkで複数のレイアウトを使用できますか?
バックエンドの場合、私は別のレイアウトをしたいです。私は複数のレイアウトを持つことができますか?要求に基づいて、それらを切り替えることそれほど単純ではないですが、
少しヒントが
私は、デフォルト以外のモジュールが呼び出されたときにレイアウトを切り替えるには、レイアウトのプラグインを作成:
class MyApplication_Layout_Controller_Plugin_Layout extends Zend_Layout_Controller_Plugin_Layout
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
switch ($request->getModuleName()) {
case 'admin': $this->_moduleChange('admin');
}
}
protected function _moduleChange($moduleName) {
$this->getLayout()->setLayoutPath(
dirname(dirname(
$this->getLayout()->getLayoutPath()
))
. DIRECTORY_SEPARATOR . 'layouts/scripts/' . $moduleName
);
$this->getLayout()->setLayout($moduleName);
}
}
その後、私のブートストラップでは、私はこれを行う:
をZend_Layout::startMvc(
array(
'layoutPath' => self::$root . '/application/views/layouts/scripts',
'layout' => 'layout',
'pluginClass' => 'MyApplication_Layout_Controller_Plugin_Layout'
)
);
デフォルト以外のレイアウトは、モジュールの後、私のディレクトリ構造は次のようになりますので:
/path/to/application/views/layouts/scripts/layout.phtml --> default layout
/path/to/application/views/layouts/scripts/admin/admin.phtml --> admin layout
かなりのだろうはい、あなたは複数のレイアウトを持つことができます。
私はコントローラアクションヘルパーとアプリケーションリソースプラグインを開発してしまったので、これを自由に使用したりインスピレーションを得たりしなければなりませんでした。
は、それはあなたのモジュールのビュー/ scriptsフォルダにlayoutName.phtmlにレイアウトを切り替えます
//in controller
$this->_helper->layout->setLayout('layoutName');
を試してみてください;)
これはまったく動作しません。 $ this - > _ helper-> layout-> setLayout( 'layoutname') – Andy
はい、明らかに正しいです。それを私が直した。 –
速くて効果的な、tip @TomášFejfarのおかげで! –
これは、違う。行:
class MyApplication_Layout_Controller_Plugin_Layout extends end_Layout_Controller_Plugin_Layout
はextends Zend_Controller_Plugin_Abstract
である必要があります。そうしないと、mvcSuccessfulActionOnly
に関するエラーが発生します。
ありがとう...返信申し訳ありません。遅くとも –