Laravelのblade.php(ブレード)とは?初心者も使い方が図例で1から分かる!

更新日:

laravelのblade.php(ブレード)とは?初心者も使い方が図例で1から分かる!

Laravelを学び始めたけど、ブレードって用語が出てくるよね。一体なんなの?

というわけで、ここではLaravelのブレードとはなんなのか?どう使うのかを初心者でもスッキリ分かるように解説します!

 

LaravelのBlade(ブレード)とは?

LaravelのBladeとは、xxx.blade.phpという名前のファイル達の事で、
サイトのレイアウトやデザインをHTMLで書くためのファイルの事です。

Laravelでは、このブレードと呼ばれるファイルにHTMLでサイトのレイアウトやデザインを書きます。

ブレードをブラウザに表示してみると、まだ投稿が入っていない空のサイトが表示されます。

 

ブレードは「Bladeテンプレート」や「View(ビュー)」と呼ばれる事もあります。実際にブラウザに表示される部分を書くファイルなのでViewなんです。当サイトでは、Blade(ブレード)と呼んでいきます。

 

bladeを入れるフォルダの場所

このbladeの場所ですが、

Laravelプロジェクト\resources\viewsフォルダ内にある、xxx.blade.phpというファイル達がブレードです。

あなたのLaravelプロジェクトにも、デフォルトでwelcome.blade.phpというサンプルブレードが入っているはずです。

今後、テキストエディタで、ページごとに新しいブレードファイルを書いていくわけですが、必ずこのフォルダ内に保存する必要があります。

 

welcome.blade.phpを表示させてみよう。

では、ブレードのイメージを掴むために、一度、welcome.blade.phpを実際にブラウザで表示させてみましょう。

ここで、一度、コマンドプロンプト(Shell/ターミナル)を立ち上げます。

ここでまず、Laravelプロジェクトフォルダ(Laravelサイトのフォルダ)までのパス(PATH)を調べます。

実際にプロジェクトフォルダを開いて、画像のように、クリックすると、パスが出るので、それをCtrl+Cでコピーします。

 

次に、コマンドプロンプトに、
cd と入力後、半角スペースをひとマス開けて、このパスをコピーします。

例:cd D:\XAMPP\htdocs\newsite

 

そして、Enterします。

次に、php artisan serve と入力し、Enterします。

こういう画面が出ればOKです。

うまく行かない場合は、こちらを読んでやり直してみてください↓

PC上のLaravelサイトをブラウザに表示する方法。初心者でも必ずできる。

 

さて、これで、ブラウザを開いて、http://127.0.0.1:8000 にアクセスします。

こんな感じの画面が表示されたはずです。

じゃあ、この画面はどこで作られているのかというと、
今話した、resources\viewsフォルダのwelcome.blade.phpなんです。

 

welcome.blade.phpの中身を見てみよう!

では、resources\viewsフォルダのwelcome.blade.phpをテキストエディタで開いて、中身のコードを見てみましょう。(エディタはVScodeがおすすめ!)

<html>、<head>とあるように、中身は普通のHTMLが書かれています。<style>には、CSSが書かれています。

 

一番下までスクロールすると、

Laravel とか、Docs、 Laracastsとか書いてありますよね。そう、ここにHTMLで書かれてる内容が
先程ブラウザでアクセスしたページに表示されてるわけです。

そういう事なんだ。blade.phpにHTMLを書く事で、サイトが表示されるんだね。
HTML以外にも、CSS、Javascript、PHPもブレードには併記できるんだ。
Neby

 

blade専用PHP、ディレクティブとは?

さて、今のwelcome.blade.phpの67行目前後にこんな表記があります。

@ifだとか、@endifだとか、見慣れない@マークが並んでますよね。

これは、ブレード専用の「ディレクティブ」と呼ばれるコードです。

ディレクティブは、PHPコードを、HTMLと混ぜて書いても分かりやすいように作られた、Laravelのブレード上でのみ使える特殊コードです。

 

なんでHTML上にPHPを書くかというと、条件分岐させるためです。

例えば、上のコードだったら、「ログイン機能がインストールされてる場合は、ログインボタンが表示され、インストールされてない場合は、表示しない」というifを使った分岐が書かれています。

ログイン機能がインストール済みだと、右上にログインボタンが表示されるわけです。

 

もしこれが普通のPHPなら、if文はこう書きます。

<?php if(strpos(url()->full(), 'privacy') !== false){
echo "<h1>プライバシーポリシー</h1>";
} ?>

<?php?>というタグで囲いながら、phpの命令を書いていきます。(URLにprivacyという単語が含まれてる時だけ、「プライバシーポリシー」と表示する、そうじゃないURLの時は表示しないという分岐を書いてます)

 

でも、laravelのブレードではちょっと違ってきます。同じものでもこう書きます。

@if(strpos(url()->full(), 'privacy') !== false)
<h1>プライバシーポリシー</h1>
@endif

そう、書き方が違うんです。これがLaravelのブレード独自のPHPコードなんです。

<?php if (strpos(url()->full(), 'privacy') !== false)

{ echo "<h1>プライバシーポリシー</h1>"; }

?>

この赤文字の部分を@に置き換えて、{ }やechoなどの見づらくなる部分を取り去ってるわけです。最後の@には@endifのように書きます。

こうする事で、HTMLと混ぜて書いてもコードが見やすくなるっていうメリットがあるんだ。
Neby

Laravelのif文2種類の使い方を初心者もよく分かる実例で解説!

 

@ディレクティブはブレードでしか使えない?

ちなみに、この@を使った書き方は、blade.phpでしか使えません。

Controller.phpなどの他のファイルでは、使えないので、普通のPHPを書きます。

 

なんでブレード以外では使えないの?
ブレード以外ではPHPしか書かないから。HTMLとか他の言語と混ぜないから、ディレクティブを使う意味がないんだ。
Neby

 

他のファイルでは、1行目に<?phpと入ってるので、ブレードのように<?php?>を何度も書く必要がありませんし、見づらくならないので、@ディレクティブは不要、使えないようになってます。

 

ブレードに普通のPHPは書けないの?

ブレードは、必ず@で書かなきゃいけないなんて事はなく、
普通の<?php?>タグを使って書く事もできます。

例えば、下の例のように、@ifの中に、<?phpという具合に、ディレクティブと普通のPHPを混ぜて使う事も可能です。

<?php ~ ?> という書き方の代わりに、@php ~ @endphpと書いても、同じように普通のphp文を書く事もできるよ。
Neby
仮に、xxx.blade.phpっていうファイル名を、xxx.phpに変えたら、このファイルは動くの?
@ディレクティブは動かなくなるね。普通のPHPは動くっちゃ動くけど、Laravel独自の機能が動かなくなっちゃうよ。
Neby

 

Bladeを効率よく使うための継承

このブレードには、継承(@extends)という機能があります。

上の画像のように、違うページでも、ヘッダーやフッター、サイドバーなどの共通部分は一緒ですよね。

なので、Laravelでは通常、共通する全体のレイアウトだけのブレード(layout.blade.php)を作成し、中身がページごとに変わる部分だけ、ページごとのブレードを作ります。

そして、継承という機能を使う事で、2つのブレードを合体させて使います。

継承については、詳しくは下の記事で解説してます。

Laravelのbladeの@sectionと@yieldの使い方、どっちがどっちか図で完璧に分かる!

Laravel6チュートリアル初心者向け:ブレード継承で複数ページを作ってみよう!

 

というわけで、bladeとは、サイト全体のデザイン、レイアウトをHTMLで書くファイルだという事を覚えておいてください。

 

ただ、この記事を読んだだけでは、腑に落ちない部分もあるでしょうから、
実際にチュートリアルで自分で作ってみてください。

  1. Laravel6チュートリアル超初心者向け:サイトを表示させて仕組みを理解しよう!
  2. Laravel6チュートリアル初心者向け:bladeでウェブページを作ってみよう!

自分で作ると、腑に落ちますよ。

 

次に、ブレードがなんなのか分かったら、

ルーティング(web.php)とコントローラーを理解する事で、本格的にLaravelを使いこなせるようになります。

Laravelのroutes(web.php)とは?超初心者向けに図解と実例でやさしく解説!

LaravelのController.phpとは?初心者向けに図と例でやさしく解説

LaravelのController,Blade,Routesの関係が図解で鬼分かる!

 

写真で血圧記録

  • この記事を書いた人

Neby

本を毎日多読しつつ、資産運用、プログラミング、心理学、ネットビジネススキルを猛向上中。貧富の差が広がる5年後、10年後に安心生活を送るためのお金のリテラシー、スキル、資産を一緒に作っていきましょう。

-PHP Laravel入門