🐘
Laravel入門2 bladeディレクティブ
記事一覧
- Laravel × Docker 最速環境構築
 - Laravel 入門1 ページ追加
 - Laravel入門2 bladeディレクティブ
 - Laravel入門3 静的ファイル
 - Laravel入門4 Request
 - Laravel入門5 Todoアプリ(データベース)
 - Laravel入門6 Todoアプリ(認証機能)
 - Laravel入門7 Todoアプリ(CRUD)
 
bladeディレクティブ
bladeディレクティブとは
laravelではControllerからviewに対して、PHP変数を渡すことができます
渡された変数を使ってbladeファイル内では、if文やfor文などを使用できます
↪︎ この構文をbladeディレクティブという
viewでPHP変数を使う準備
- 
TopController.phpからviewにage, skillsを渡す。
(今回は年齢[age]と特技[skills]を渡すようにする) 
- TopController.php
 
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TopController extends Controller
{
    function index() {
        $age = 18; // ageを定義
        $skills = [
            ["name" => "Python", "years" => "2年"],
            ["name" => "PHP", "years" => "1年"],
            ["name" => "JavaScript", "years" => "0.5年"],
        ];
        // viewの第2引数には連想配列を指定することでviewに変数を渡すことができる
        return view("top.index", compact("age", "skills"));
        // compact関数を使用しているが、以下と意味は同じ
        // return view("top.index", [
        //     "age" => $age,
        //     "skills" => $skills
        // ]);
    }
}
表示
- top/index.blade.php
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>トップページ</h1>
    {{-- 中括弧2つで囲むことによって変数を表示可能 --}}
    <p>{{$age}}</p>
    <p>{{$skills[0]["name"]}}</p>
</body>
</html>

条件分岐
- top/index.blade.php
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>トップページ</h1>
    @if ($age >= 20)
        <p>お酒が飲めます</p>
    @elseif ($age >= 18)
        <p>免許が取れます</p>
    @else
        <p>未成年です</p>
    @endif
</body>
</html>

ループ
- top/index.blade.php
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>トップページ</h1>
    <table>
        <tr>
            <td>名前</td>
            <td>経験年数</td>
        </tr>
        @foreach ($skills as $skill)
        <tr>
            <td>{{ $skill["name"] }}</td>
            <td>{{ $skill["years"] }}</td>
        </tr>
        @endforeach
    </table>
    @for ($i = 0; $i < 5; $i++)
        <p>{{ $i }}</p>
    @endfor
</body>
</html>

Discussion