使用 View

這節我們將學會如何使用

  • View 類別

  • Blade 樣板系統

整個流程是建立 Blade 樣版檔,使用 View 來產生 HTML 文件,送出。

1.建立 blade 檔

在 app/views 目錄下,建立一個 home.blade.php 檔案。

!注意,要使用 Blade 樣板系統,檔案名稱必須命名為 xxx.blade.php,xxx 是自訂的名稱,後面的 .blade.php 表示這是一個 blade 樣板。

在 home.blade.php 中的內容:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
Hello Laravel ~~
</body>
</html>

目前這個 blade 樣版檔並沒有用到任何 Blade 的功能,只是一個單純的網頁。

2.在 route 中傳回這個 view

在 app/routes.php 檔中,將原本的 route 換成

Route::get('/', function()
{
return View::make('home');
});

View 類別的 make 方法,需要傳入一個樣板的名稱,這裡就是步驟 1 所建立的 home.blade.php,只要給它名稱即可。make 方法會產生 HTML 文件,然後送出。這樣就完成了最簡單的 View 的製作,當然實際的案子可能會複雜許多。

傳遞資料

既然叫做樣板,那就表示可以在同一個 view 中顯示不同的資料。現在我們要在 route 中將資料傳給 view。修改 route 中的程式碼如下:

return View::make('home')
->with('title', '首頁')
->with('hello', '大家好~~');

with 的第一個參數代表 php 的變數名稱,第二個參數代表這個變數的值。你可以透過 with 串接多個變數。

接下來要在樣板顯示這些變數的值,修改 home.blade.php 如下:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ $title }}</title>
</head>
<body>
{{ $hello }}
</body>
</html>

在 blade 檔中,要顯示變數的值,可以用左右各兩個大括號來包圍,在其中放 php 變數。Blade 系統會自行轉換,例如:

{{ $title }}

會被轉換成

<?php echo $title; ?>

Blade 功能非常強大,這裡只先介紹幾個簡單的功能。

有時候可能會因為沒有傳遞變數給 blade 而造成找不到變數的錯誤,可以這樣避免:

{{ isset($name) ? $name : 'Default' }}

它是一個三元運算子的結構,blade 也提供一個更簡便的寫法,功能同上:

{{ $name or 'Default' }}

利用 or 後面加預設值的方式,來避免找不到變數時發生錯誤。

Blade 有兩種顯示變數的方式

{{ xxx }}
{{{ xxx }}}

差別在兩個大括號,會轉換 html 碼,而三個大括號不會做任何轉換。

例如:

->with('hello', '<h1>大家好~~</h1>');
在 {{ $hello }} 中會以 h1 的格式表現。而在 {{{ $hello }}} 中,會顯示為
<h1>大家好~~</h1>