博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3. 视图数据View Data和Balde模版 - Laravel从零开始教程
阅读量:5950 次
发布时间:2019-06-19

本文共 2881 字,大约阅读时间需要 9 分钟。

我们经常需要将数据传递到视图层显示,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);});
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```文件,我们将``` ... ```中的内容删除,然后我们先写一下原生的php的写法,之后我们再使用```blade```模版,我们可以对比看下balde是多么的易用,我们先使用php原生的语句来输出我们的```$users```数据, 中的代码如下:
    
  • 像上面这样写是没有问题的,视图层能够正常的加载并渲染数据,不过如果都是这么去写的话,那真的是件痛苦的事,现在我们就用laravel自带的```balde```模版的写法来更改一下:
        @foreach ($users as $user)        
  • {
    { $user }}
  • @endforeach
    像上面这样写,是不是就感觉代码清晰很多了,而且balde模版的语法非常容易猜到,基本上都是在php已有的关键字前面加上```@```符号作为开头,以```@end```加上关键字作为结尾,比如说上面的数组循环:
    @foreach ($users as $user)    ...@endforeach
    比如说判断语句:
    @if()@else@endif
    在balde模版中如果要解析变量,我们可以用两对大的花括弧```{
    { $user }}```,至于blade的更多语法和用法,你可以去翻一翻laravel的官方文档,如果你没有时间看文档,立马就要使用laravel,也没有什么关系,边做边查询文档就行,不过空闲的时候,你还是等把文档看它个至少7,8遍吧。本节到这里结束。

    转载地址:http://oqsxx.baihongyu.com/

    你可能感兴趣的文章
    Web服务器技术的优缺点
    查看>>
    格式化的盘要怎样寻回资料
    查看>>
    显示字符串子程序
    查看>>
    JS prototype 属性
    查看>>
    javascript 操作DOM元素样式
    查看>>
    常用的Powershell命令
    查看>>
    单列的用法的网址:
    查看>>
    Unicode字符编码表
    查看>>
    C++ sqlite3解决中文排序问题
    查看>>
    Android 内存管理 &Memory Leak & OOM 分析
    查看>>
    [转]html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
    查看>>
    [水]三个数学的小技巧题
    查看>>
    mysql中查看数据库的版本,什么版本
    查看>>
    [leetcode-342-Power of Four]
    查看>>
    MongoDB3.0 创建用户
    查看>>
    2017-2018-1 20155319 《信息安全系统设计基础》第3周学习总结
    查看>>
    express 3.0.x 中默认不支持flash() 的解决方法
    查看>>
    uva-111-dp
    查看>>
    算法学习1——矩阵转置
    查看>>
    Tcl与Design Compiler (九)——综合后的形式验证
    查看>>