前メモからの移行なのでかなり古い情報です。
FuelPHP で Smarty を使い、独自修飾子を作成したい時の問題です。
問題の現象
環境は FuelPHPでSmartyを使う を参照。
上記の環境では、fuel/vendor/smarty/smarty/libs/ がプラグインディレクトリになります。
当然、上記のディレクトリにプラグインファイルを作成すれば正常に稼働するのですが、fuel/vendor/ 以下はできれば手を入れたくないものです。
可能な限り、カスタム的なファイルは fuel/app 以下に設置したいです。
そのため、fuel/app/config/parser.php の View_Smarty - environment にある plugins_dir を設定し、プラグインディレクトリを fuel/app 以下に設定します。
'plugins_dir' => array(APPPATH.'vendor'.DS.'smarty'.DS.'libs'.DS.'plugins'),
これで、fuel/app/vendor/smarty/libs/plugins/ がプラグインディレクトリとして読み込まれるはずなのですが、実際には読み込まれません。
対応方法
いろいろ調べた結果、以下のような情報を見つけました。
FuelPHP Updates – bluebones.net
上記を見ると、1.3 リリースには対策が入った?というように読み取れるのですが、1.7, 1.8 を使っている限りでは、やはり plugins_dir は有効になっていないように思います。
結局、上記の workaround を微妙に変えて、以下のように Controller で明示的に plugins_dir を指定することで対応しています。
Config::load('parser');
$s = Config::get('View_Smarty');
View_Smarty::parser()->addPluginsDir($s['environment']['plugins_dir']);一応上記で期待通りに動いているのですが、イマイチ釈然としないので情報をお持ちの方は是非教えてください(/_\*)
コメント