Zend Framework では、ページのアクションで headScript を介してスタイル/スクリプトを追加できたことを覚えているようです。Zend2 では、これはオプションではないようです。
これの処理に関するドキュメントにはあまり記載されていません。基本的に私の質問は; これらのスタイル/スクリプトをビューに追加するのは適切ですか? または、コントローラー アクションにそれらを追加する新しい方法はありますか?
ありがとう
Zend Framework では、ページのアクションで headScript を介してスタイル/スクリプトを追加できたことを覚えているようです。Zend2 では、これはオプションではないようです。
これの処理に関するドキュメントにはあまり記載されていません。基本的に私の質問は; これらのスタイル/スクリプトをビューに追加するのは適切ですか? または、コントローラー アクションにそれらを追加する新しい方法はありますか?
ありがとう
コントローラーアクションで:
$this
->getServiceLocator()
->get('viewhelpermanager')
->get('HeadScript')
->appendFile('/js/custom.js')
;
「呼び出し可能」「サービスロケーター対応」コントローラープラグインを作成することで、これを簡単にすることができます。
モジュール構成ファイルでそれを行うことができます:
...
'controller_plugins' => array(
'invokables' => array(
'Head' => 'Application\Controller\Plugin\Head',
)
),
...
のようないくつかのメソッドmodule/Application/src/Application/Controller/Plugin/Head.php
を実装して構築する「ヘッド」クラスを作成します。たとえば、ビュー ヘルパーを取得して返すだけです。ServiceLocatorAwareInterface
javaScript()
styleSheet
return $this
->getServiceLocator()
->getServiceLocator() // Main service Locator
->get('viewhelpermanager')
->get('HeadScript')
;
次に、コントローラーでは次のようになります。
$this->Head()->javaScript()->appendFile('/js/custom.js');
あなたはそれについて好きなだけ空想することができます。アクションごとのレイアウトを管理する XML を使用した Magento スタイルでさえあるかもしれません。
アップデート
ZF2 MVC を使用している場合、出力はバッファリングされます。したがって、スクリプトとスタイルシートをページに追加するには、ビュー モデルに添付されたテンプレート ファイルから行うのが最適であることがわかりました。
$this->headScript()->appendFile('/js/custom.js', 'text/javascript');
$this->headLink()->appendStylesheet('/css/custom.css');
ビューに関連しているため、コントローラーから離してください。
マーシャル・ハウスの話の意味がわかりません。
プラグインは PluginInterface を実装する必要があります。なぜ ServiceLocatorAwareInterface を実装するのですか?
このコードをどこに貼り付けますか?
return $this
->getServiceLocator()
->getServiceLocator() // Main service Locator
->get('viewhelpermanager')
->get('HeadScript');
また、AbstractPlugin (それから拡張する場合) には getServiceLocator() メソッドがありません。それはどういう意味ですか?メインサービスロケーター? 例を書いてください。