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在這邊告一個段落,等真正需要的時候再回來玩。