コントローラ/アクション固有のJavaScriptをレイアウトに挿入するメソッドが必要です。そのjavascriptは<head>
、通常のコンテンツが配置されている場所から遠く離れた、ドキュメントの内部に配置する必要があります。ページごとに複数のビューを使用できるインフラストラクチャがすでに整っており、すでに持っているZend_Layoutはこれを最大限に活用しています。
<?php
$script = $this->layout()->script;
if (!is_null($script)) : ?>
<script type="text/javascript"> // <![CDATA[
<?php echo $script; ?>
// ]]>
</script>
<?php endif; ?>
ただし、通常のビューがデフォルトでレイアウトに自動的に配置されるのと同じように、スクリプト出力が自動的に選択されるようにしたいと思い$this->layout()->content
ます。この機能はViewRendererクラスによって提供されることを理解しています。基本的に、私がやりたいのは、のインスタンスをチェックし、それが存在する場合は名前付き出力セグメント/VIEWPATH/scripts/CONTROLLER/ACTION.js.php
としてレンダリングすることです。script
ディスパッチ後に自動的にそれを行うZend_Controller_Pluginを比較的簡単に作成できますが、その場合、コントローラーにはスクリプトのビューで値を設定する方法がありません。また、ViewRendererコントローラープラグインがコントローラーとアクションの名前をどのように活用しているかを複製する方法も必要になります。
理想的には、これをViewRendererヘルパーに追加するのが理想的ですが、そのようなことはサポートされていないようです。
私はこれについて完全に間違っていますか?フレームワークに組み込まれたページ固有のJavascriptを埋め込むためのメカニズムはありますか?(この問題を抱えているのは私だけではありません...)
ビリー3