公司導入 Laravel 分享 - 4. 視圖
一、繼承
Laravel 的樣板系統有一個很方便的功能是「繼承」,主要是用來定義網站 html 的結構。通常一個網頁的 page-header、page-footer、側邊選單是一個固定的結構並不常改變,幾乎每一個頁面都是一樣的,這個時候繼承這個功能就很好用。
<!-- layouts/app.blade.php -->
<html>
<head>
<title>應用程式名稱 - @yield('title')</title>
</head>
<body>
<div class="page-header">
我是 Page Header
</div>
<div class="page-sidebar">
我是側邊攔
</div>
<div class="page-body">
@yield('content')
</div>
<div class="page-footer">
我是 Page Footer
</div>
</body>
</html>
有了上面這個檔案,我們其他頁面的樣板要撰寫時就去繼承他
// 頁面
@extends('layouts.app')
@section('title', '頁面標題')
@section('content')
<p>頁面內容。</p>
@endsection
所以這樣組裝之後,其實我們得到的是
<html>
<head>
<title>網站名稱 - 頁面標題</title>
</head>
<body>
<div class="page-header">
我是 Page Header
</div>
<div class="page-sidebar">
我是側邊攔
</div>
<div class="page-body">
<p>頁面內容。</p>
</div>
<div class="page-footer">
我是 Page Footer
</div>
</body>
</html>
二、載入
除了可以繼承之外當然我們還有載入可以用。比如說我們在新增、編輯頁面看到的表單內容幾乎是一樣的,可又有些許不同,可能是 form action 或是 按鈕文字,這時我們可以把中間相同的部分截取出來做成一個新的檔案,讓新增、編輯頁面去載入他。
<!-- _form.blade.php -->
<div class="form-group">
<label class="col-sm-2 control-label">標題</label>
<div class="col-sm-10">
<input class="form-control" type="text" name="title">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">內容</label>
<div class="col-sm-10">
<textarea class="form-control" name="content"></textarea>
</div>
</div>
<div class="text-center">
<input type="submit" class="btn btn-primary" name="submit" value="送出">
</div>
// create.blade.php
@extends('layouts.app')
@section('title', '新增')
@section('content')
<form class="form-horizontal" action="{{ route('post.store') }}" method="post">
@include('post._form')
</form>
@endsection
三、顯示變數
在樣板中我們如果要輸出變數可以適用「大括弧」把變數包起來,這會把變數當成「字串」直接輸出在網頁上
{{ $name }}
{{ <input type="text"> }}
如果我們希望得到的結果是 html,則必須使用:
{!! <input type="text"> !!}
四、控制結構
1. if else
@if (count($posts) === 1)
我有一篇文章!
@elseif (count($posts) > 1)
我有多篇文章!
@else
我沒有任何文章!
@endif
2. loop
for
@for ($i = 0; $i < 10; $i++)
目前的值為 {{ $i }}
@endfor
foreach
@foreach ($posts as $post)
<p>文章標題:{{ $post->title }}</p>
@endforeach
while
@while (true)
<p>
我永遠都在跑迴圈。NO~~~
</p>
@endwhile
迴圈有一個地方很常被應用到,知道是哪裡嗎?
留言
張貼留言