资讯专栏INFORMATION COLUMN

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

vibiu / 2210人阅读

从零开始学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);
});
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遍吧。
    
    本节到这里结束。
    

    文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/22019.html

    相关文章

    • 2. Laravel视图View路由Route初探 - Laravel从零开始教程

      摘要:在程序界最熟悉的莫过于通过输出我们能了解路由和最基础的视图,这一小节,我们主要是学习下如何创建路由,如何加载视图,这节非常简单,跟着做就行。从零开始学教程目录 在程序界最熟悉的莫过于Hello World,通过输出Hello Word,我们能了解路由和最基础的视图,这一小节,我们主要是学习下如何创建路由,如何加载视图,这节非常简单,跟着做就行。 上一节我们通过laravel new 项...

      iliyaku 评论0 收藏0
    • Laravel 上手教程之实现用户注册登录

      摘要:在文件的标签中加上以下代码新手上路注册登陆上面只是引用了一些简单的的,也没什么难的,不用伤心。 Laravel身为最优雅的PHP框架,很多学习PHP的小伙伴造就对Laravel垂涎欲滴。今天就来实现你的愿望,让我们一起从零开始,利用Laravel实现Web应用最常见的注册和登录功能!所有的课程源码已放在Github上:laravel-start. Race Start ! 首先我们来...

      stormgens 评论0 收藏0
    • Codeigniter 4.0-dev 版源码学习笔记之七—— View 视图

      摘要:行处理视图文件名后缀。结语从源码上看,使用了原始作为模版机制使得视图逻辑非常简单。无非也就是把视图进来,用输出缓冲把执行结果拿到即可。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 CI 的 View 没有像 Laravel 等一些流行框架一样设计的那么重,有自己的一套模版机制,CI 一直采用纯天然的 PHP 模板形式,纯天然的好处是不用再学习一套模板语言了,缺...

      LiangJ 评论0 收藏0
    • Laravel 5系列教程五:MVC的基本流程

      摘要:原文来自免费视频教程地址期间受到很多私事影响,终于还是要好好写写的教程了。我们来实现这个功能显示文章详情通过文章展示来快速体验上面的流程注册路由来到中,我们增加一个路由上面的路由指定我们需要加载中的方法。 原文来自: https://jellybool.com/post/programming-with-laravel-5-model-controller-view-basic-wor...

      mrcode 评论0 收藏0

    发表评论

    0条评论

    vibiu

    |高级讲师

    TA的文章

    阅读更多
    最新活动
    阅读需要支付1元查看
    <