咱們常常須要將數據傳遞到視圖層顯示,Laravel中是如何作到這點的呢?那咱們就要先了解下Balde模版.laravel
咱們如今仍是進入到咱們的Laravel52的項目中,用sublime打開它:數組
➜ cd /usr/local/var/www/Laravel52 ➜ subl .
進入到route.php文件中,上一節咱們只是顯示一個靜態的視圖層,以下:bash
Route::get('/', function () { return view('welcome'); });
下面咱們新建一個$users
的數組,而後將$users
數組中的數據傳遞到視圖中去,Laravel提供了多種方法將數據傳遞到視圖,咱們先來看第一種方法,將一個數組做爲第二個參數傳入到view()
函數中。函數
Route::get('/', function () { $user = ['Zhoujiping', 'Kuker Chou']; // 設置$user數組的key爲users, 以數組的形式作爲第二個參數傳遞給 // view()函數,視圖層就能經過users這個key拿到$users數組中的數據了 return view('welcome', ['users' => $users]); });
還能夠對上面的寫法進行簡化下,咱們知道php自帶有一個compact()
函數,這個函數可以建立一個包含變量名和該變量名對應的值的數組,如:code
$user = 'zhoujiping'; print_r(compact('user')); // 上面的語句經過compact(),轉化成的結果是['user' => 'zhoujiping'] $users = ['Zhoujiping', 'Kuker Chou']; print_r(compact('users')); // 上面的語句經過上面的語句經過compact(),轉化成的結果是 // ['user' => ['Zhoujiping', 'Kuker Chou']]
ok, 如今咱們就能更改咱們的代碼以下:教程
Route::get('/', function () { $users = ['Zhoujiping', 'Kuker Chou']; return view('welcome', compact('users')); });
若是咱們有多個變量要傳遞,咱們能夠這麼寫:ip
Route::get('/', function () { $country = 'China'; $users = ['Zhoujiping', 'Kuker Chou']; $ages = [10, 20]; return view('welcome', compact('country', 'users', 'ages')); });
嗯,像上面這樣寫,代碼是否是乾淨不少了,不然若是變量過多,你就須要傳遞一個長長的二維數組做爲view()
的第二個參數,代碼的可讀性就太差了。文檔
除了上面的傳遞參數的方法,Laravel還提供了with()
函數,咱們能夠這麼寫:get
Route::get('/', function () { $users = ['Zhoujiping', 'Kuker Chou']; return view('welcome')->with('users', $users); });
咱們也能夠講with('users', $users)
這裏的'user'健和with
憑藉在一塊兒,將'users'的首字母變大寫, 變成withUsers($user)
,咱們看下總體的代碼:
Route::get('/', function () { $users = ['Zhoujiping', 'Kuker Chou']; // 使用with()來傳參數 return view('welcome')->with('users', $users); });
Route::get('/', function () { $users = ['Zhoujiping', 'Kuker Chou']; // 使用with+自定義的鍵名(如:users),拼接成withUsers()來傳參數 return view('welcome')->withUsers($users); });
若是有多個變量要傳遞,你能夠鏈式調用```with()```,如:
return view('welcome')->with('users', $users)->with('country', $country)->with('ages', $ages);
好了,傳遞數據給view層的方法就是上面幾種了,我比較喜歡使用```compact()```這種類型,下面咱們把route.php中的代碼改回成下面這樣:
Route::get('/', function () { $users = ['Zhoujiping', 'Kuker Chou']; return view('welcome', compact('users')); });
下面咱們去視圖層顯示數據,咱們打開```resources/views/welcome.balde.php```文件,咱們將```<body> ... </body>```中的內容刪除,而後咱們先寫一下原生的php的寫法,以後咱們再使用```blade```模版,咱們能夠對比看下balde是多麼的易用,咱們先使用php原生的語句來輸出咱們的```$users```數據, <body>中的代碼以下:
<body> <?php foreach ($users as $user) { ?> <li><?= $user; ?></li> <?php } ?> </body>
像上面這樣寫是沒有問題的,視圖層可以正常的加載並渲染數據,不過若是都是這麼去寫的話,那真的是件痛苦的事,如今咱們就用laravel自帶的```balde```模版的寫法來更改一下:
<body> @foreach ($users as $user) <li>{{ $user }}</li> @endforeach </body>
像上面這樣寫,是否是就感受代碼清晰不少了,並且balde模版的語法很是容易猜到,基本上都是在php已有的關鍵字前面加上```@```符號做爲開頭,以```@end```加上關鍵字做爲結尾,好比說上面的數組循環:
@foreach ($users as $user) ... @endforeach
好比說判斷語句:
@if() @else @endif
在balde模版中若是要解析變量,咱們能夠用兩對大的花括弧```{{ $user }}```,至於blade的更多語法和用法,你能夠去翻一翻laravel的官方文檔,若是你沒有時間看文檔,立馬就要使用laravel,也沒有什麼關係,邊作邊查詢文檔就行,不過空閒的時候,你仍是等把文檔看它個至少7,8遍吧。 本節到這裏結束。