咱们常常须要将数据传递到视图层显示,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遍吧。 本节到这里结束。