2012-03-24 8 views
3

からカスタムプレースホルダをクリア、のは、私はサイドバーを作成するコントローラプラグインを持っているとしましょう:Zend Frameworkの - 私はviewscriptからカスタムプレースホルダをクリアしようとしているviewscript

$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap'); 
    $view = $bootstrap->getResource('view'); 
    $partial = $view->render('partials/_sidebar.phtml'); 
    $view->placeholder('sidebar')->append($partial); 

私の部分は私のサブメニューが含まれています(Zend_Navigationビューヘルパーによってレンダリングされます)。

そのサイドバーをレンダリングするために、私は私のレイアウトでこれを持っている:

<?= $this->placeholder('sidebar'); ?> 

しかし、何一部のページであれば、私は私のサイドバー(例えばログインページ)を表示したくないですか?これらのケースをどうすれば処理できますか?

私は$this->placeholder('sidebar')->exchangeArray(array());を使用してクリア/私のプレースホルダをリセットできると思っていたが、私がviewscriptから私のプレースホルダにアクセスすることはできませんようだ:

// in /application/modules/default/views/account/login.phtml 
<?php $placeholder = $this->placeholder('sidebar'); 
Zend_Debug::dump($placeholder); ?> 

// output: 

object(Zend_View_Helper_Placeholder_Container)#217 (8) { 
    ["_prefix":protected] => string(0) "" 
    ["_postfix":protected] => string(0) "" 
    ["_separator":protected] => string(0) "" 
    ["_indent":protected] => string(0) "" 
    ["_captureLock":protected] => bool(false) 
    ["_captureType":protected] => NULL 
    ["_captureKey":protected] => NULL 
    ["storage":"ArrayObject":private] => array(0) { 
    } 
} 

そのようなことを行うにはどのように任意のアイデア?

ありがとうございました。

編集:私のプラグインは、その後、私のviewscriptがプラグインの前を実行して、レイアウトをを実行して、postDispatch()メソッドで登録され、実行されて以来

私の問題は、実際には非常に簡単でしたプラグイン。

今後のオプションは何ですか? preDispatchメソッドで私のサイドバーを宣言することは実際にはできません。なぜなら、スクリプトディレクトリが設定されていないため、このステップで実行するビュースクリプトを特定することができないからです。

また、action()ヘルパーを使用することもできます。どう思いますか?質問はalready asked about itです。私はまだこれが適切なやり方ではないと感じています。

また、私のプラグインを私のコントローラのpreDispatch()メソッドに移動することも考えられますが、それは私のサイドバーにあるすべてのコントローラのコピー/ペーストやbaseControllerの作成につながりますが、このアイデアのように、私はそれが間違っているように感じる。

+0

ひとつのアイデアは、サイドバーをレンダリングする前に '$表示 - > isSidebarRenderable'のようにフラグを設定し、レイアウトで、それをチェックすることです。面白いですが、うまくいくはずです。 –

+0

私はこれについて考えましたが、あなたが言ったように、それは優しくないようです。とにかくあなたの考えを共有してくれてありがとう:) –

+0

確かに。私は誰かが何かクリーナーを思いついているかどうかを見たいと思っています。乾杯! –

答えて

関連する問題