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