Asset クラスを使わない方法
前提
一般的に FuelPHP で画像ファイルなどを取得する時Asset::img('logo.png')imgタグ を取得する。この Asset クラス、デフォルトのディレクトリだけではなく、
Asset::add_path('resources/templates/dark/')上記のように任意のパスを追加してやることもできる。
便利な Asset クラスだが、
/var/www/html/hoge/fuel/ ~ /var/www/html/hoge/public/ ~
/var/www/html/hoge/hoge_images/ ~
こういうニッチな事案の対応策について書く。
方法
単純に URI をimgタグに突っ込むのもアリだが、別サーバならともかく同サーバではそういう指定はやりたくない。 また、相対パスなどはルーティングの関係上、うまくいかないと思う。Uri::create() を使う
Uri::create() はこのような感じでコントローラの URI を取得したい時などに使うことが多い。echo Uri::create('controller/method');
// http://localhost/controller/method が返ります
この要領で URI を取得する。
例えば
/var/www/html/hoge/hoge_images/test.png
上記のファイルを取得したい場合は以下のように書くと URI が取得できるので、
Uri::create('hoge_images/test.png')これを以下のように img タグに突っ込んでやれば良い。
<img src="<?= Uri::create('hoge_images/test.png') ?>">任意のファイルパスを渡すと、img タグを返すような関数を作ってやれば、Asset クラスのように便利だと思う。