Copy Source | Copy HTML <?php head::addCSS( 'main' ) ?>
ファイルがドキュメントのヘッドに正しく接続されるようにします。 ここには新しいものは何もありません。 symfonyフレームワークでは、これは最初のバージョンからすでに実装されています。 そして、すぐに投げられるhtmlを処理する他の方法はありえないのは当然です。 メカニズムは非常にシンプルで、Kohanaから完全に準備されたドキュメントを取得し、そこに必要な行を追加します。 フックでこれを行うことができますが、コントローラーのオーバーライドで行うことにしました。
head.phpヘルパーをapplication / helpersフォルダーに追加します
Copy Source | Copy HTML
- <?php
- / * <br/> *ヘルパーは挿入されたcssおよびjsファイルを蓄積します <br/> *そして最後にレイアウトにそれらを挿入します <br/> * /
- / ** <br/> *スタイルファイルとJavaScriptファイルを挿入 <br/> * <br/> * @author Valera Sizov <br/> * /
- クラス長
- {
- static $ styleFiles = array ();
- static $ jsFiles = array ();
- 静的パブリック関数 addingFiles( $レイアウト )
- {
- $ css = array_merge(Kohana :: config( 'style.files' )、self :: $ styleFiles );
- $ js = array_merge(Kohana :: config( 'js.files' )、self :: $ jsFiles );
- $ out = '' ;
- foreach ( $ css as $ file )
- {
- $ out 。= '<link rel = "stylesheet" type = "text / css" href = "/ static / css /'。$ file 。 '.css">' 。 "\ n" ;
- }
- foreach ( $ js as $ file )
- {
- $ out 。= '<script src = "/ static / js /'。$ file 。 '.js" type = "text / javascript"> </ script>' 。 "\ n" ;
- }
- return str_replace( '</ head>' 、 '$ out。 "\ n"。</ head>' 、 $ layout );
- }
- 静的パブリック関数 addCss( $ css )
- {
- if (is_array( $ css )){
- self :: $ styleFiles = array_merge(self :: $ styleFiles 、 $ css );
- } else {
- self :: $ styleFiles = array_merge(self :: $ styleFiles 、 配列 ( $ css ));
- }
- }
- 静的パブリック関数 addJs( $ js )
- {
- if (is_array( $ js )){
- self :: $ jsFiles = array_merge(self :: $ jsFiles 、 $ js );
- } else {
- self :: $ jsFiles = array_merge(self :: $ jsFiles 、 配列 ( $ js ));
- }
- }
- 静的パブリック関数 removeCss()
- {
- Kohana :: config_set( 'style.files' 、 array ());
- }
- 静的パブリック関数 removeJs()
- {
- Kohana :: config_set( 'js.files' 、 array ());
- }
- 静的パブリック関数 addOnlyCss( $ css )
- {
- self :: removeCss();
- self :: addCss( $ css );
- }
- 静的パブリック関数 addOnlyJs( $ js )
- {
- self :: removeJs();
- self :: addJs( $ js );
- }
- }
- ?>
コントローラーが継承するアプリケーション/ライブラリ/ BaseController.phpコントローラーを作成します。
Copy Source | Copy HTML
- <?php
- 抽象クラス BaseController は Template_Controllerを拡張します {
- public $ template = 'frontend / layout' ;
- パブリック関数 _render()
- {
- if ( $ this-> auto_render == TRUE)
- {
- //クラスが破棄されたときにテンプレートをレンダリングします
- echo head :: addingFiles((string) $ this-> template);
- // $ this-> template-> render(TRUE);
- }
- }
- }
- ?>
そして今、2つの設定アプリケーション/ config / style.phpを作成します:
Copy Source | Copy HTML
- <?php
- / *デフォルトでメインテンプレートに添付されるjavascriptファイルの列挙 <br/> その後、それらを再定義または追加できます* /
- $ config [ 'files' ] = array ();
- ?>
2番目のアプリケーション/ config / js.php:
Copy Source | Copy HTML
- <?php
- / *デフォルトでメインテンプレートに添付されるjavascriptファイルの列挙 <br/> その後、それらを再定義または追加できます* /
- $ config [ 'files' ] = array ();
- ?>
以上です。 もちろん、これをすべてモジュールの形で配置することもできます。そのため、プロジェクト間で転送する方が便利でしょう。 しかし、誰でも自分でこれを行う必要があります。
ここで、設定で接続する必要があるデフォルトファイルを規定します。 そして、必要に応じて、テンプレートに次のように記述します。
Copy Source | Copy HTML
- <?php head :: addCss( 'form_contacts' ) ?>
ヘルパーには一連のメソッドがあります。
重複をチェックする方向にもう少し追加する予定です。
私のブログ