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}

とすれば、表示される。