Laravel歴0ヶ月の17新卒が継承についてまとめてみた!!
できた内容をアウトプットすることで
他の方のお役に立てればと思っております。
また間違っている場合はご指摘ください。
環境紹介
laradockをベースに
Name | Version |
---|---|
CentOS | 7.x |
MySQL | 5.5 |
php | 5.6 |
Apache | 2.2 |
Laravel | 5.4 |
で立ち上げております
ディレクトリ構成としては
laravel
├ web
└ laradock
├ Workspace
├ Apache2
├ MySQL
└ php
いざ[@extends]についてのチュートリアル
[@extends]って何よ?
一言でいうと テンプレートの継承
に利用されるもの
簡単な例をみてみましょう
⭐️layout
ここではレイアウトのメイン部分を作っています。
いわば枠組み的な感じです。
@yield('content')がのちにどういう意味になるかを説明したいと思います。
$ mkdir resources/views/layouts
$ vim resources/views/layouts/layout.blade.php
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ユーザー一覧</title>
</head>
<body>
@yield('content')
</body>
</html>
⭐️index
@extendsでlayoutsフォルダの中にあるlayout.blade.phpを継承します
@sectionで@extends内の@yield('content')部分に
@endsection部分までを表示させる宣言をしています。
$ vim resources/views/index.blade.php
@extends('layouts.layout')
@section('content')
<h1>ユーザー名: {{ $user_name }}</h1>
@endsection
⭐️UsersController
ここではaboutという関数を作り
user_nameという変数にドラえもんを入れ
それをviewのindexの中へリターンするという処理を書いてます
compact関数は変数名とその値から配列を作成する為応用的に使えると思っています。
$ php artisan make:controller UsersController
$ vim vim app/Http/Controllers/UsersController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UsersController extends Controller
{
public function about()
{
$user_name = "ドラえもん";
return view('index', compact('user_name'));
}
}
⭐️Routes
localhostへアクセスした際UsersController内のabout関数が呼び出されるようになっています
$ vim routes/web.php
<?php
Route::get('/', 'UsersController@about');
⭐️アクセス
ユーザー名:ドラえもん
解説
Laravelのテンプレートエンジンであるbladeの書式を使って変数を表示しています。
@extendsではlayoutsの中にあるlayoutを継承するという宣言をここでしています。
@extends('layouts.layout')
そしてその継承したlayoutの中にあるcontent部分に以下を挿入みたいな感じです
@section('content')
<h1>ユーザー名: {{ $user_name }}</h1>
@endsection
公式にはこのように書いてあります
子のページを定義するには、「継承」するレイアウトを指定する、
Blade @extendsディレクティブを使用します。
Bladeレイアウトを拡張するビューは、
@sectionディレクティブを使用しレイアウトのセクションに内容を挿入します。
つまり、 @yield
の部分に contentのsection
が入りますよという感じです。
まとめ
テンプレートエンジンはとても優秀
次回はデータベースからデータを取得し表示するものを紹介したいと思います。