* jsディレクトリ
* cssディレクトリ
* imgディレクトリ
内のjsファイル、cssファイル、画像ファイルに対するHTMLタグを生成するのに使います。
メソッドはそれぞれ
* Asset::js()
* Asset::css()
* Asset::img()
となります。
ただ、例えばjqueryのプラグインを導入した時等、
その中に入っているjs、css、画像ファイルを前述のjs、css、imgディレクトリに
分けて入れてしまっては、メンテナンス性が悪くなる恐れがあります。
個人的には、以下のような感じで、そのまままとめて放り込みたいです。
--
public/
assets/
js/
css/
img/
jquery/
plugin1/
plugin1.js
plugin1.css
plugin1.png
plugin2/
plugin2.js
plugin2.css
plugin2.png
--
そこで、ドキュメントを参考に
Asset::add_path('assets/jquery/', array('css', 'js', 'img'));して
Asset::js('plugin1/plugin1.js');してみたのですが、エラーとなってしまいました。
http://docs.fuelphp.com/classes/asset/usage.html#/method_add_path
http://press.nekoget.com/fuelphp_doc/classes/asset/usage.html#/method_add_path
諦めようかなと思ったのですが、試しに
Asset::add_path('assets/jquery/', 'css'); Asset::add_path('assets/jquery/', 'js'); Asset::add_path('assets/jquery/', 'img');として
Asset::js('plugin1/plugin1.js');してみると、うまくいきました。
Asset::css('plugin1/plugin1.css');もOKでした。
imgメソッドは確認していませんが、たぶんOKでしょう。
Asset::add_path処理を共通化したい場合、各Controllerの親Controllerのbefore()で問題無いですが、
controller_startedイベントで行なっていも良いのかなと思います。
http://docs.fuelphp.com/classes/event.html
http://press.nekoget.com/fuelphp_doc/classes/event.html
--
追記
controller_startedイベントだとRestコントローラの時も通ってしまう??
そのうち確認しておこう。。。
追記2
上記、Restコントローラでも通りました。
イベントクラスの使い所難しいなー。。。
No comments:
Post a Comment