Zend_Layout で ビュー以外のコンテンツを表示
Zend_Layout のドキュメントに、サンプルレイアウトがある。
http://framework.zend.com/manual/ja/zend.layout.quickstart.html#zend.layout.quickstart.example
で、ドキュメントを読んでも、
<?php echo $this->layout()->navi ?> <?php echo $this->layout()->sidebar ?>
をコントローラ側で Zend_Layout に設定する方法が書いてなかった。
# Zend_Layout を単体のコンポーネントとして使用する場合の方法は書いてある。
単体のコンポーネントと同じように、以下の様にすれば出来るかと思ったが、出来なかった。
<?php // $navi、 $sidebar は他のテンプレートを読み込んだ状態 $this->_helper->layout->navi = $navi; $this->_helper->layout->sidebar = $sidebar;
Zend_Layout のソースを読んでやり方が分かった。
assign() を使用する。
<?php // $navi、 $sidebar は他のテンプレートを読み込んだ状態 $this->_helper->layout->assign('navi', $navi); $this->_helper->layout->assign('sidebar', $sidebar);
テンプレート側はドキュメントの通りに書けば呼べる。
ちなみに Smarty の場合は
{$layout.navi} {$layout.sidebar}
とすれば、表示される。