2009-10-23 14 views
60

私はそれが単一行だと確信していますが、私はそれを見つけることができません。Zend Frameworkでレイアウトファイルを切り替える方法は?

特定のアクションに異なるレイアウトファイルを使用するにはどうすればよいですか?

更新:これは私のために働いた、ありがとう!

// Within controller 
$this->_helper->_layout->setLayout('other-layout') //other-layout.phtml 

//Within view script 
<?php $this->layout()->setLayout('other-layout'); ?> 
+0

誰かが '_helper_layout'を修正することができますか?' _helper-> layout' – MitMaro

+0

です。ありがとう! – Andrew

答えて

62

コントローラ内部から:(these docs経由)

$this->_helper->layout->setLayout('/path/to/your/layout_script'); 

編集:私はパスがどんなレイアウトディレクトリに相対的であることを言及する必要があります(デフォルトでは、それはapplication/layouts/scripts/だ)されます

+4

レイアウトパスが正しく設定されていれば( '$ layout-> setLayoutPath( 'application/layouts/scripts')')、 '$ this-> _ helper_layout-> setLayout( 'alternative_layout')'を使って 'application/layouts/scripts/alternative_layout.phtml'にあります。 – chelmertz

+0

ビューから: layout() - > setLayout( '/ path/to/your/layout_script')?> – Travis

+0

@Travis:ビュースクリプトでこの種のロジックを望んでいないのは、少数のビュースクリプトを使用して、アプリケーションの重要な設定をデバッグする場所を知ることができます。 – chelmertz

13

このようにも使用できます

// Within controller 
Zend_Layout::getMvcInstance()->setLayout('layout_name'); 

//Within view script 

<?php $this->layout()->setLayout('layout_name'); ?> 

あなたのレイアウトは/ layouts/scripts/folderにある必要があります。そうでないと、パスも指定する必要があります。 .phtmlを書く必要はありません。レイアウトの名前だけです。

関連する問題