【Laravel】CSSファイルの設置場所と読み込み方!publicとresourceの違い

この記事からわかること

  • LaravelWebサイトを作成する
  • CSSファイル設置場所
  • 読み込み方法
  • publicフォルダとresourceフォルダの違い

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Laravelを使って初めてwebサイトを作るときに、構成するHTMLファイルやCSSファイル、画像ファイルをどこに置けば良いか迷いがちです。

今回はLaravelでWebサイトを作成する初心者向けに、各種ファイルの設置場所とLaravel内のフォルダの違いをまとめていきます。

LaravelでのCSSファイル設置場所

設置するのはpublicフォルダの中です。

CSSファイルに限らず、HTMLファイル、jsファイル、imgファイルなどWebサイトを構成するファイルは全てpublicフォルダ内に設置すればOKです。

Laravelアプリを作成した段階ではpublicフォルダの中にはcssフォルダはないので必要であれば自分でフォルダ作成して設置します。

Laravel内のpublicフォルダの中にcssフォルダを作成する

public(公開)という名前からも分かるようにLaravel内で外部からアクセスされても良いファイルはここに格納していくのが基本です。

CSSファイルの読み込み方法

作成したHTMLにCSSを読み込ませるには通常通りhead内にlinkでスタイルシートを指定してあげるだけです。

しかしファイル構造とパスの点で注意が必要です。

public内に設置したHTMLファイルなら違和感なくパスを記載できますが、resourceフォルダに設置したHTMLファイル(blade.phpなどテンプレート)の場合はどうなるでしょうか?

サイトアクセス時にresourceフォルダの中にあるブレードファイルをルートやコントローラーで読みに行かせる場合もlinkのパスはpublic内にあるものとして記述します。

なのでどのファイルでも変わらずhead内に以下のように記述すればOKです。

<link rel="stylesheet" href="/css/style.css" >

asset関数で記述する

asset関数とはpublicフォルダのパスを返してれるヘルパ関数の1つです。

これを使うことで先程のような相対パス指定ではなく、絶対パス指定でリンクを読みにいけるようになります。

bladeの構文である{{ }}で囲むことで中に記述した関数や変数を展開させることができます。

<link rel="stylesheet" href="{{ asset('/css/style.css')  }}" >
 asset('/css/style.css') 
↓切り替わる
https://ドメイン/プロジェクト/public/css/style.css

asset関数はプロトコルがhttpでもhttpsでもどちらでも対応していますがSSL化した通信しか使わない場合はsecure_asset関数を使います。

<link rel="stylesheet" href="{{ secure_asset('/css/style.css')  }}" >

基本的な使い方は同じで、返すパスがhttpsオンリーになるだけです。詳しくは公式リファレンスをご覧ください。

公式リファレンス

LaravelでCSSが効かない時

CSSが効かない時は以下の原因が考えられます。

まずはちゃんとパスが正しいものが反映されていているか確認してみましょう。デベロッパーツール(F12キー)を開き、sourceタブの構造部分から適応されているCSSファイルの中身を確認することができます。

デベロッパーツールのsourceタブでCSSファイルの確認方法

ここにちゃんと中身があるのにコードが更新されていなければキャッシュが残っている可能性があります。

デベロッパーツールを開いた状態で左上の「」を右クリックし、「キャッシュの消去とハード再読み込み」をクリックします。

これでブラウザ側のキャッシュを消去できます。

それでもダメならLaravel側のキャッシュも削除してみましょう。

コマンドライン(ターミナルやコマンドプロンプト)に以下のコードを打ち込むとキャッシュを削除(ブレードファイルを再コンパイル)することができます。

$  php artisan view:clear

ターミナルの細かい使い方はこちらをご覧ください。

publicフォルダとresourceフォルダの違い

Laravel内ではresourceフォルダの中にCSSファイルや、jsファイルを格納するためのフォルダが予め用意されています。

resourceフォルダとpublicフォルダ内では使い方が異なります。

publicフォルダとresourceフォルダの違うポイント

公開範囲

まずは公開範囲が異なります。

publicフォルダは先ほども言った通り、外部からアクセスすることが可能な公開されているフォルダです。

CSSファイルや画像ファイルなど見られても問題ないようなファイルをここに格納します。

フォルダの役割

2つ目はフォルダの役割です。

resourceフォルダに入れるべきファイルは「*.blade.php」や「✳*.scss」などそのまま出力されない(コンパイルされてから出力)ファイルを入れます

普通のHTMLファイルやCSSファイルも入れることは可能(コントローラーなどでアクセスさせることも可能)ですが手間が増えるだけなのでメリットがないと思います。

まとめ

最後に今回のまとめです。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index