使用 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>