1

Zend Framework では、ページのアクションで headScript を介してスタイル/スクリプトを追加できたことを覚えているようです。Zend2 では、これはオプションではないようです。

これの処理に関するドキュメントにはあまり記載されていません。基本的に私の質問は; これらのスタイル/スクリプトをビューに追加するのは適切ですか? または、コントローラー アクションにそれらを追加する新しい方法はありますか?

ありがとう

4

2 に答える 2

9

コントローラーアクションで:

$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を実装して構築する「ヘッド」クラスを作成します。たとえば、ビュー ヘルパーを取得して返すだけです。ServiceLocatorAwareInterfacejavaScript()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');

ビューに関連しているため、コントローラーから離してください。

于 2013-03-23T03:13:19.197 に答える
0

マーシャル・ハウスの話の意味がわかりません。

プラグインは PluginInterface を実装する必要があります。なぜ ServiceLocatorAwareInterface を実装するのですか?

このコードをどこに貼り付けますか?

return $this
->getServiceLocator()
->getServiceLocator() // Main service Locator
->get('viewhelpermanager')
->get('HeadScript');

また、AbstractPlugin (それから拡張する場合) には getServiceLocator() メソッドがありません。それはどういう意味ですか?メインサービスロケーター? 例を書いてください。

于 2014-04-07T08:27:01.597 に答える