laravel在檢視中使用php程式碼

huaweichenai發表於2023-02-14

在laravel框架中,在檢視檔案中使用PHP程式碼使用到了Blade 模板引擎,Blade 是 laravel 提供的一個簡單強大的模板引擎。它不像其他流行的 PHP 模板引擎那樣限制你在檢視中使用原生的 PHP 程式碼,事實上它就是把 Blade 檢視編譯成原生的 PHP 程式碼並快取起來。快取會在 Blade 檢視改變時而改變,這意味著 Blade 並沒有給你的應用新增編譯的負擔。Blade 檢視檔案使用 .blade.php 字尾,一般情況下都被儲存在 resources/views 目錄

注意:使用blade模板引擎時檢視檔案的字尾名必須是.blade.php,如果你的檢視檔案字尾名是.php的話,這樣就無法使用blade模板引擎

一:輸出PHP變數

{{ $name }}
{{ date('Y-m-d H:i:s',time()) }}
{{ in_array($name,$arr)?'true':'false' }}
{ isset($name)?$name:'default' }}
{{ $name or 'default' }}

二:顯示未轉義資料

預設的,Blade {{}} 宣告會自動的使用 PHP 的 htmlentities 方法來避免 XSS 攻擊。如果你不想你的資料被轉義,你可以使用下面的語法

{!! $name !!}
注意:當你在應用中輸出使用者輸入的資料時應該非常的謹慎,你應該總是使用 {{}} 來轉義內容中任意的 HTML 實體

三:if語句

@if ($name == 'hello')
    hello
@elseif($name == 'yes')
    yes
@else
    who
@endif

為了方便,Blade 也提供了 @unless 指令:

@unless($name)
    {{$name}}
@endunless

@unless()就可以理解為 if( ! ),就是if not

四:迴圈語句

@foreach($student as $val)
  {{ $val->name }}
@endforeach

@for ($i = 0; $i < 10; $i++)
  The current value is {{ $i }}
@endfor

@forelse ($users as $user)
  <li>{{ $user->name }}</li>
@empty
  <p>No users</p>
@endforelse

@while (true)
  <p>I'm looping forever.</p>
@endwhile

五:包含子檢視

你可以使用 @include 指令來包含一個檢視的內容,當前檢視中的變數也會被共享給子檢視

<div>
  @include('shared.errors')
  <form>
  <!-- Form Contents -->
  </form>
</div>

儘管子檢視會自動繼承父檢視中的所有資料變數,你也可以直接傳遞一個陣列變數來新增額外的變數到子檢視

@include('view.name', ['some' => 'data'])

相關文章