前面的 Route 只傳回了一行文字,接下來我們要傳回一個 view。
這裡要認識:
這裡要認識:
- View 類別
- Blade 樣板系統
1.建立 view
在 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>
一個簡單的 HTML 碼,將原本在 route 中的文字移到 body 中。
2.在 route 中傳回這個 view
在 app/routes.php 檔中,將原本的 route 換成Route::get('/', function()
{
return View::make('home');
});
View 類別的 make 方法,需要傳入一個 Blade 檔,這裡就是步驟 1 所建立的 home.blade.php,只要給它名稱即可。
3.傳遞資料
現在我們要在 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 變數。
{{ $title }}
它會被轉譯成
<?php echo $title; ?>
Blade 功能非常強大,這裡只先介紹幾個簡單的功能。有時候可能會因為沒有傳遞變數給 blade 而造成找不到變數的錯誤,可以這樣避免:
{{ isset($name) ? $name : 'Default' }}
它是一個三元運算子的結構,blade 也提供一個更簡便的寫法,功能一樣:
{{ $name or 'Default' }}
利用 or 後面加預設值的方式,來避免找不到變數時發生錯誤。有兩種顯示變數的方式
{{ ... }}
及 {{{ ... }}}
,差別在兩個大括號,會轉換 html 碼,而三個大括號不會做任何轉換。例如:
->with('hello', '<h1>大家好~~</h1>');
在 {{ $hello }}
中會以 h1 的型式表現。而在 {{{ $hello }}}
中,會顯示為
<h1>大家好~~</h1>
你好!
回覆刪除view這個資料夾應該是在resources裡面,
是否您打錯了呢?
我的學習筆記是4.2版的(https://laravel.com/docs/4.2/responses)
刪除還沒時間看5.x的,我查了一下 5.2版文件(https://laravel.com/docs/5.2/views)
是在 resources 裡沒錯。
請問用Controller RETURN VIEW('MAIN');
回覆刪除MAIN是在RESOURCES/VIEWS/MAIN.blade.php
網站會出現ERROR
但當我把MAIN.blade.php改成MAIN.php
網站就沒問題了
請問我該如何解決?
請盡快回覆謝謝!!
把 debug 打開看看有什麼錯誤訊息,
刪除另外,你是用 return View::make('main') 嗎?
main.blade.php 才是對的樣板,錯誤不是在名稱,
看一下你的樣板內容是不是有錯,
或是 controller 呼叫有錯,例如沒有傳值給 view。