iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
自我挑戰組

從0開始-30天摸索laravel系列 第 14

DAY14: blade 該結束了吧!

  • 分享至 

  • xImage
  •  

Blade之模板語法

前言:
今天目標是把Blade的條件陳述式和迴圈一次解決,看到這裡會感覺laravel會有許多的部分跟原本的PHP很不一樣,所以這也是有些人說框架的學習曲線問題,但是熟悉之後大概就是不同的世界了,繼續努力…

If
@if (count($records) === 1)
    I have one record!
@elseif (count($records) > 1)
    I have multiple records!
@else
    I don't have any records!
@endif
for
@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}
@endfor
foreach
@foreach ($users as $user)
    <p>This is user {{ $user->id }}</p>
@endforeach
@forelse($users as $user)
    <li>{{ $user->name }}</li>
@empty
    <p>No users</p>
@endforelse
while
@while (true)
    <p>I'm looping forever.</p>
@endwhile

顯示變數

Route::get(hello, function () {
    return view('welcome', ['name' => 'Samantha']);
});

之後,可以在blade中
Hello, {{ $name }}.

也可以這樣使用
{{ rand() }}

等同於
<?php echo rand(); ?>

如果Blade的檔案中也需要使用javascript,可能會遇到一個問題,傳統的javascript與Jquery都是包在 可能影響不大,但在JS前端框架中,就可能會遇到語法衝突的部分,例如vue.js,如果要在vue.js中輸出變數,也是使用類似的方式,如下

Vue.js也是使用{{ name }}

這樣一來如何讓. Blade引擎理解哪一段是php 哪一段是vue.js呢??後來我爬文到是要這樣處理
單一行解決
@{{name}}

如果有整個區段的需求
@verbatim標示整段都是vue.js需要的

@verbatim
    <div class="container">
        Hello, {{ name }}.
    </div>
@endverbatim

補充一下,Blade也在@foreach中,新增了$loop,可以藉由$loop提取迴圈的狀態
例如
$loop->first 回傳是布林值,是否為第一次
$loop->last回傳是布林值,是否為最後一次
所以也可以這樣應用

@foreach ($users as $user)
@if ($loop->first)
    	<p>This is first user {{ $user->id }}</p>
	@endif
@endforeach

其餘還有很多,$loop->index $loop->count $loop->depth…等。

總感覺view & Blade的部分還有許多東西可以摸,但時間真的不太夠,所以接下來會往下走,繼續玩laravel的MVC,暫時先把V在這邊告一個段落,等真正需要的時候再回來玩。


上一篇
DAY13: blade GO GO
下一篇
DAY15: database配置
系列文
從0開始-30天摸索laravel31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言