したがって、この場合に何ができるか。 最初の考えは、インラインスクリプトとスタイルを外部ファイルに抽出し、headLink型とheadStyle型のヘルパーを介して接続することです。 スタイルがすべて明確な場合-特定のビューのかなり特定のスタイルをcssファイルに入れ、必要に応じて接続する必要がありますが、jsは依然としてデータに依存しています。
最初の解決策として、必要に応じて必要なファイルを接続するためのプラグインをfrontControllerに書き込みます。
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
class My_Controller_Plugin_Webinit extends Zend_Controller_Plugin_Abstract { public function preDispatch() { $controllerName = $ this ->_request->getControllerName(); $actionName = $ this ->_request->getActionName(); $view = Zend_Layout::getMvcInstance()->getView(); if ( file_exists(APPLICATION_CSS_FOLDER. '/' . $controllerName. '/' . $actionName. '.css' ) ) { $view->assign( 'cssControllerAction' ,$controllerName. '/' .$actionName. '.css' ); } if ( file_exists(APPLICATION_JS_FOLDER. '/' . $controllerName. '/' . $actionName. '.js' ) ) { $view->assign( 'jsControllerAction' , $controllerName. '/' .$actionName. '.js' ); } } } * This source code was highlighted with Source Code Highlighter .
Bootstrapクラスで作成したプラグインを接続することを忘れないでください:
*このソースコードは、 ソースコードハイライターで強調表示されました。
- 保護された関数_initFrontControllerPlugins()
- {
- $ frontController = Zend_Controller_Front :: getInstance();
- $ frontController-> registerPlugin( new My_Controller_Plugin_Webinit());
- }
すでに明らかなように、使用されるcssファイルとjsファイルは、ビュースクリプトの配置の完全な類推に従って配置されます。 / application / views / script / controllerName / actionName /の代わりに、それらのルートディレクトリはそれぞれpublic / css /とpublic / js /になります。 これを行うには、index.phpで3つの定数を宣言します。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- 定義済み( 'APPLICATION_PUBLIC_FOLDER' )
- || 定義( 'APPLICATION_PUBLIC_FOLDER' 、
- dirname(__ FILE__));
- 定義済み( 'APPLICATION_CSS_FOLDER' )
- || 定義( 'APPLICATION_CSS_FOLDER' 、
- realpath(APPLICATION_PUBLIC_FOLDER。 '/ css' ));
- 定義済み( 'APPLICATION_JS_FOLDER' )
- || 定義( 'APPLICATION_JS_FOLDER' 、
- realpath(APPLICATION_PUBLIC_FOLDER。 '/ js' ));
プラグインを使用すると、レイアウト内の必要なファイルを次のコードに接続できます。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- <? if ($ this-> cssControllerAction)$ this-> headLink()-> appendStylesheet( '/ css /'。$ this-> cssControllerAction)?>
- <? if ($ this-> jsControllerAction)$ this-> headScript()-> appendFile( '/ js /'。$ this-> jsControllerAction)?>
ブラウザを開きます-必要なファイルが接続されています。
質問はjavascriptに残っています。 コードをパブリックディレクトリ内の外部ファイルに移動しました。 ただし、たとえば、alert()関数を使用して辞書に基づいてウェルカムテキストを表示する必要があります。 当然、Zend_Translateは翻訳に使用されますが、すべてのデータがビュースクリプトでのみ利用可能な場合はどうでしょうか?
私自身のタスクでは、名前空間の編成が理想的なソリューションであると考えました。 たとえば、単一のビュースクリプト内の翻訳者には、限られたフレーズセットが必要です。 したがって、これらのフレーズのリポジトリを整理し、jsレベルで必要なプロセッサに渡すことができます。
方法は次のとおりです。
application.jsプロジェクトのメインjsファイルで、グローバルメソッド、オブジェクト、およびハンドラーがセットアップされます。 ここで追加できます:
*このソースコードは、 ソースコードハイライターで強調表示されました。
- $( document ).ready( function (){
- $ .TRANSLATION = {};
- });
ストレージは整理されていますが、ここでそれを埋める必要があります。
これを行うには、ビュースクリプトで次のコードが必要です。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- <script type = "text / javascript" >
- $( document ).ready( function (){
- $ .data($。TRANSLATION、 "Nice to see you!" 、 '<?= $ this-> translate( "Nice to see you!")?>' );
- </ script>
リポジトリのデータを使用するには、プロジェクトのこの部分を処理する任意の関数から呼び出し、リポジトリにアクセスして必要なデータを取得します。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- alert($ .data($。TRANSLATION、 "はじめまして!" ));
そのため、次の図を取得しました。インデックスコントローラー、インデックスアクションについては、パブリックディレクトリ/js/index/index.jsにファイルがあり、これは機能するための一連の関数です。 この場合、必要なデータはすべてビュースクリプトで直接データウェアハウスに送られ、ストレージ自体はアプリケーションのメインjsファイル内のすべてのビュースクリプトに対してグローバルに宣言されます。
MVCモデルによる。 少し遠いが、まだ。
コントローラー(ユーザーへの反応)として、frontControllerへのプラグインがあります。このプラグインは、接続、レイアウトスクリプト、および基礎を構成します-application.js。
モデルは、jsストレージのデータを蓄積するビュースクリプトです。
ビューはjavascriptプラグインであり、クライアントビューを完全に担当します。
将来使用するために、ストレージに任意のデータを保存できます。