[Laravel] View 的 Layout

有別於義大利麵的寫法,各大框架都喜歡把頁面拆開
常用需要引入的內容,例如導覽頁、Footer這種
都會拆開,另外引入


為了顯示新的頁面,我們新建一個 Route 規則
Route::get('/', 'PostsController@index');
然後建立 Model 和 migration
這邊可以分開下指令,建立 controller、建立 model、建立 migration
也可以直接使用 make:model 的額外參數直接建立
php artisan make:model Post -mc
指令完成後就可以看到對應的檔案
修改一下 migration 檔案就可以執行 migration

因為我們剛剛 Route 導向 PostsController 的 index 方法
所以我們在 PostsController  建立 index 方法
public function index()
{
    return view('posts.index');
}

讓他使用 view/posts/index.blade.php 的 View
沒錯,去建立這個檔案吧
在第一行
@extends('master')
讓他去繼承父層下 master.blade.php
於是我們在複層建立新檔案 master.blade.php
其他內容如同一般HTML規則,除了body內
<body>

    @yield('content')
</body>

認識blade樣板引擎裡常用到的
@yield('content')
會把 content 內容作為 class 內容引入頁面
呼叫的方法我們看到剛剛的 index.blade.php 內

@extends('layouts.master')
@section('content')
    Lay out show內容
@endsection

繼承了 master.blade.php 之後,使用 @section 可以把設定對應的 class內容
直到關閉標籤前都是歸類成內容
當然正常的 HTML tag還是可以繼續使用的

網頁內容我們用yield來導入
而常用的例如 footer, header這種東西
我們用
@include('layouts.footer')
來引入 layouts 資料夾下面 footer.blade.php 這隻檔案
開始自由發揮分拆頁面囉 ~
習慣上,最基礎的頁面會叫做 master.blade.php

以上就是這次的Lay out 練習
基本上各家框架都會這麼做,而Laravel 使用的是 Blade 模板引擎
就算寫原生也會叫你把常用的部分拆出來不要每一個頁面重寫一遍的啦


留言