iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0

視圖指的就是網頁的畫面

以前我們寫原生PHP的時候大概會向下圖這個樣子將邏輯和畫面寫在一起,也就是普遍的義大利麵程式碼(邏輯與畫面混砸不易修改)


    <?php 
        if(isset($_POST["username"])){
           // .... ;
        }
    ?>

    <form action="index.php" method="post">
        <label for="username">使用者名稱</label>
        <input type="text" id="username" name="username"><br/>
        <label for="pwd">密碼</label>
        <input type="password" id="pwd" name="pwd"><br/>
        <input type="submit" name="submit" value="登入">
    </form>


但進入了Laravel以後網頁(View)的角色就成了只會顯示資料或是提供資料寫入的輸入介面,不用在同個檔案上寫下混亂的邏輯

以下是laravel視圖的寫法,我們需要在view路徑下建立我們的網頁檔案命名為xxx.blade.php

// 如何呼叫Controller或是Route傳來的數值  
{{$value}} 

// 條件
@if ($num == 1)
    <p>一筆紀錄</p>
@elseif ($num > 1)
    <p>多筆紀錄</p>
@else
    <p>沒有紀錄</p>
@endif


// 迴圈 for, while 都適用
@foreach ($orders as $order)
    <p>訂單編號是 {{$order->Order_ID}}</p>
@endforeach

//forelse的使用類似於Foreach,唯一的差別是如果傳入的陣列是空白的可以使用@empty來接續後面的動作,而不會發生錯誤而停止程式的運行

@forelse ($orders as $order)
    <p>訂單編號是 {{$order->Order_ID}}</p>
@empty
    <p>目前沒有訂單</p>
@endforelse

// 條件判斷
@switch($i)
    @case(1)
        <p>1號</p>
        @break
    @case(2)
        <p>2號</p>
        @break
    @default
        <p>可以是任何號</p>
@endswitch

//include 跟原生的include相同就是將include裡面檔案裏面所有的內容遷入在我們include的這個視圖之中
@include('xxx') 

//extends要搭配 @yield,extends寫上我們這隻程式被誰所用,我們可以使用@yield 呼叫我們所需特定@section的區塊而不需要顯示全部的內容

@extends('xxx')  @yield  @section

// example1.blade.php

@extends('example2')

@section('title')
    <p>這是我的抬頭 呵呵</p>
@endsection

// example2.blade.php

@yield('title')

//在example2.blade.php就會出現example1.blade.php內 section名為title的所有內容了。

Laravel內有很多優化原本寫法的新寫法,以上列出比較常見的給各位。


上一篇
Day 2 Laravel基礎功 - 路由Routing
下一篇
Day 3 Laravel基礎功 - CSRF Protection跨領域攻擊的防護機制
系列文
學框架永不嫌晚,從現在開始學Laravel你也可以14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言