3. 视图数据View Data和Balde模版 - Laravel从零开始教程

从零学Laravel目录列表

我们经常需要将数据传递到视图层显示,Laravel中是如何做到这点的呢?那我们就要先了解下Balde模版.

我们现在还是进入到我们的Laravel52的项目中,用sublime打开它:

➜ cd /usr/local/var/www/Laravel52
➜ subl .

进入到route.php文件中,上一节我们只是显示一个静态的视图层,如下:

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()函数,这个函数能够创建一个包含变量名和该变量名对应的值的数组,如:

$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'));
});

如果我们有多个变量要传递,我们可以这么写:

Route::get('/', function () {
    $country = 'China';
    $users = ['Zhoujiping', 'Kuker Chou'];
    $ages = [10, 20];

    return view('welcome', compact('country', 'users', 'ages'));
});

嗯,像上面这样写,代码是不是干净很多了,否则如果变量过多,你就需要传递一个长长的二维数组作为view()的第二个参数,代码的可读性就太差了。

除了上面的传递参数的方法,Laravel还提供了with()函数,我们可以这么写:

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);
});

```php
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遍吧。

本节到这里结束。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 193,812评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,626评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,144评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,052评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,925评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,035评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,461评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,150评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,413评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,501评论 2 307
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,277评论 1 325
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,159评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,528评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,868评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,143评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,407评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,615评论 2 335

推荐阅读更多精彩内容