CodeIgniter で asset ファイル (css, js, image など) を何処に置けば良いか分からず悩んだ.Rails だと public フォルダに置いて helper メソッドで位置を指定するんだけど,CI にはそれらしきフォルダが見つからず.

ググッて見たら下のような記事が見つかった.

これを眺めていると,base_url() を使って base タグにアプリケーションルートを設定し,そこに asset を置く方法が紹介されていた.詳しくは次のページを参照.

やり方

やり方は簡単.アプリケーションのルート (application/config/config.php の $config['base_url'] で指定した場所) に css や js のディレクトリを作り,その中に asset ファイルを配置.controller の head タグ内で次のように設定する.

<base href="<?php echo base_url(); ?>">

これで asset ファイルをアプリケーションルートからの相対パスで指定できるので,次のように記述することができる.

<link rel="stylesheet" type="text/css" href="css/main.css" />
<script type="text/javascript" src="js/prototype.js"></script>

これがデファクトなやり方かは分かりません :-p

まとめ

  • CodeIgniter で Asset (css, js, image, など) ファイルを置く場所は base タグと base_url() を使って指定する
  • ただし,これが普通のやり方かは分からない (CI に詳しい方,是非教えて下さい).

追記 (2011.09.16)

html helper に link_tag()img() があることに気付きました.

URL ヘルパー : CodeIgniter ユーザガイド 日本語版 Version 2.0.3

前述の「やり方」に書いたとおり,アプリケーションのルートに css と image ディレクトリを作り,次のように使います (base タグの設定は不要です).

<?php echo link_tag("css/main.css"); ?>
<?php echo img("image/icon.png"); ?>

これが次のように展開されます.

<link href="http://example.com/app/css/main.css" rel="stylesheet" type="text/css" />
<img src="http://example.com/app/image/logo.png" />

script_tag() はないのかな?