Laravel学习笔记(五)——视图,数据的外衣

qcgzxw 2018年10月22日 08:47 0

balabala

视图——数据的外衣,主要用来包装数据并展示给用户。一个网站,你可以没有后端数据,但你不可能没有视图。我们可以仅用视图来完成一个简单的企业官网或者产品展示页面,所以,视图还是很重要的。就拿现在很热的微信小程序来说,微信给你托管的也仅仅是所有的视图代码,你的逻辑实现完全靠外部服务器提供的API接口。而微信小程序的作用仅仅是将API接口传输过来的JSON数据包装并显示出来。 而在Laravel中的视图(blade模板),就是一个可插入后端数据的HTML文件。

创建视图

视图文件是位于 resources/views 下,以 .blade.php 为后缀的文件。由于没有特殊的文件包含或命名空间等一些固定的代码,php artisan make命令中也没有生成视图文件的命令。通常我们直接创建文件即可。

视图文件一般的命名规则为 小写表示视图标识,后面接.blade.php。如index.blade.php

然而在开发过程中,可以根据项目的复杂度来决定是否启用子目录。 例如,若是项目太大,前台后台系统需要分开写视图文件,则可以在 resources/views 目录下创建一个前台文件夹(student)和一个后台文件夹(admin),这样可以让代码看起来更清晰。而在调用视图文件的时候,直接用 .符号 或者 /符号即可。

return view('student.index');//返回前台的index视图模板
return view('admin.index');//返回后台的index视图模板

数据传输

一般来说,Laravel项目中单独返回一个视图的情况还是非常少的,通常都是视图+数据的方式展示在浏览器。其中,数据的传输就显得至关重要。

在Laravel中,都是控制器将数据传给指定的视图的。其中,控制器在传递数据的时候有以下两种方式。

view函数第二个参数

第一种方式就是将数据作为view的第二个参数一并传输给指定的视图。

$student = Student::find($id);// 获取指定id的学生信息
return view('student.detail',['student' => $student]);// 将获取到的学生信息数据传递给student.detail模板

优雅万能的with

$student = Student::find($id);// 获取指定id的学生信息
return view('student.detail') -> with(['student' => $student]);// 将获取到的学生信息数据传递给student.detail模板

就我个人而言的话,更倾向于使用with的方式传值,这样显得比较优雅也更清晰。

模板使用数据

对于传入的数据,模板是怎样整合到html当中的呢?这就是blade模板起到的作用了。对照以上的例子来说的话,学生信息数据是传递到了视图文件/resources/views/student/detail.blade.php中,它通过几个固定的语法能将传入的数据和模板完美的整合成html代码并输出到浏览器显示。

如果传入的数据为单一值,则在blade模板中只需要将变量放入{{}}中即可。如果传入的数据为数组,可以在数组后面用 -> 然后接数值名称表示某一数值。

文件 /resources/views/student/detail.blade.php

<article>
    <h1>{{ $student -> name }}</h1>
    <!-- 输出学生姓名 -->
    <p>{{ $student -> info }}</p>
    <!-- 输出学生信息 -->
</article>

2018-10-21_142340.png

OK,如果你学完了这几章的内容,你应该可以利用Laravel上手并开发一个简单的项目了,享受编程的乐趣吧!