引言

上一期我们通过分配路由地址,在url中接收位置参数并传递给控制器方法, 并且在控制器内简单地打印输出接收的参数。

本期我们尝试着使用laravel的模板功能,把控制器内组装好的数据渲染到视图模板文件, 并做展示。

代码时间

我们把目光还暂时放在控制器的方法内,接着前一章的 EventsController@show 方法。 接收到路由传递的 $id 变量后,我们将其附加到视图渲染函数,并发送到模板文件。

代码是这样的:

public function show($id)
{return view('events.show')->with('id', $id);
}

使用 *view** 函数返回 IlluminateViewView 对象的 with 方法,就可以传递数据到模板了。

模板文件的地址在 resources/views/events/show.blade.php,我们追加一行内容:

<p>We're looking at event ID #{{ $id }}.</p>

其中 {{ $id }} 就是控制器内传递来的变量,模板内使用双大括号进行包裹,模板最后解析为以下的PHP代码:

<?php echo $id; ?>

简单地进行了变量打印输出。此时浏览器内我们仍然访问这个url地址:

http://example.dev/events/42

正常的情况下输出内容如下:

see We're looking at event ID #42. 

说明从路由,到控制器处理,到视图渲染,都已经正常地工作了。

laravel为什么说是最优雅的框架呢?因为提供了许多优雅的方法,比如上面控制器方法内, 使用 View 对象的 with 方法,可以传递键值对,传递数组。如果传递的是单个变量值, 有一个语法糖可以使用,如下代码:

public function show($id)
{return view('events.show')->withId($id);
}

其中 withId 就是与ORM查询内的 whereId 等等一直,都会解析为 with('id', $id) 的样式, 我们只需按照首字符大写的驼峰方式书写即可。

传递多个变量

上一节只在视图渲染的时候,传递了一个变量值,而实际业务中,我们不可能把所有的数据,都写入到同一个变量内, 然后在模板使用单个组装的变量。

所以我们尝试同时传递多个变量,很容易实现,如果你不厌其烦,多次调用with方法即可:

public function show($id)
{return view('events.show')->with('id', $id)->with('name', 'Laravel Hacking and Coffee');
}

在模板内,就可以直接使用 $id$name 两个变量了:

<p>{{ $name }} has the event ID #{{ $id }}.</p>

正常是没有什么问题的,会正确地渲染为指定数据。

一般我们没必要写一大串的 with 函数,一个变量一个变量地传递。可以组装为数组,传递给 view 助手函数的第二个位置参数, 比如下面这样:

$name = 'Head First PHP';
$date = date('Y-m-d');
return view('welcome', compact('name', 'date'));

使用compact函数将两个变量包裹为键值对的数组传递给 view 函数,就可以正常在视图模板内使用了。 或者为了直观一些,我们自己封装这个数组结构:

public function show($id)
{$data = ['name' => 'Head First PHP','date' => date('Y-m-d')];return view('events.show')->with($data);
}

视图内对于这样的单个变量的值,直接输出就是了:

{{ $name }} is scheduled for {{ $date }}!

写在最后

本文通过多种方法对从控制器内接收和组装的数据通过视图方法 view 函数 渲染到模板文件并展示,为了演示功能,我们使用的都是单个变量没有复杂结构的数据。 下一章我们继续深入模板的高级功能。

Happy coding :-)

我是@程序员小助手,持续分享编程知识,欢迎关注。

laravel blade include使用变量_3分钟短文:可能是Laravel模板最直白的用法了,没有之一...相关推荐

  1. mvc 前段定义变量_3分钟短文 | Laravel blade模板里优雅地定义PHP变量

    引言 Laravel秉持MVC的设计理念,在V = view 中放置视图相关的内容.特别是 blade 模板引擎带来了很强大的解析方式. 与传统的PHP与HTML写作一团方式不容,Blade 使用特定 ...

  2. request用法_3分钟短文:说说Laravel页面会话之间的数据保存Session用法

    引言 我们知HTTP请求是没有状态的,两个请求之间没有直接的关联关系.但大多数情况下, 我们需要保持用户的会话间数据的连续性,这时,为了数据安全起见, 有必要在服务器上临时存储一些上下文数据了. 这就 ...

  3. sql查询无结果返回空_3分钟短文 | Laravel 查询结果检查是不是空,5个方法你别用错...

    引言 Laravel 提供了 Eloquent ORM 对象用于操作数据库,将其进行抽象方便操作. 因为设计的灵活度,大家在使用Model查询数据集的时候,会面临结果为空,记录不存在的问题, 那么如何 ...

  4. laravel $request 多维数组取值_3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据...

    引言 上一章我们教会大家如何从用户表单内正确地获取数据,可是没有讲,获取到的数据到底有啥用,或者说,有的用户提交的数据压根儿就没正经填,那些错乱无效的数据,如果直接放到数据库,纯粹是对数据库的污染. ...

  5. html尾部代码_3分钟短文:Laravel Form,让你不再写 HTML 的好“库”

    引言 作为后端工程师的你,是不是面对一堆JS,CSS感觉无比抓狂.如果能摆脱大量的冗余的HTML代码块, 那该多好啊.laravel作为扩展性极强的框架,自然是为广大后端开发者赋能. 本文我们讲一个简 ...

  6. 安卓应用用户数据_3分钟短文:Laravel应用跟用户打交道,就从拿到他们的数据开始!...

    引言 本来讲完路由和控制器,应该接着讲一讲视图的,但是鉴于视图的功能实在太枯燥,况且是前端页面,免不了写一些js和css.而laravel是偏重后端的,所以为了给后端的开发同学缓冲的时间,我们跳过视图 ...

  7. laravel artisan 后台运行_3分钟短文:Laravel用户自定义命令行简明教程

    引言 完成一个功能需求,有时候并不需要一个界面UI,比如定时任务,后台任务, 对于这类任务往往比较耗时,在一个web页面生命周期内,要拖的很久.这时候我们 需要将其放在后台交给操作系统执行. 本期说一 ...

  8. 语句作用_3分钟短文:Laravel模型作用域,为你“节省”更多代码

    引言 原则上代码写一次,处处是引用,不需要大量的冗余代码,这是一种趋势,也是提高代码健壮性的努力方向. laravel模型为我们提供了一层数据库操作层,将数据交互独立出来. 但是久而久之,随着项目的需 ...

  9. laravel $request 多维数组取值_3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?...

    引言 web应用程序公开访问几乎没有不带用户交互的,难免要接收用户输入的奇奇怪怪的东西.对于后端程序,必须对输入的内容进行有效性过滤. 这就是本文的重点,说一说laravel中输入请求的校验. 学习时 ...

最新文章

  1. PHP 设计模式 笔记与总结(9)数据对象映射模式
  2. django-TDD
  3. 网络安全、Web安全、渗透测试之笔经面经总结(二)
  4. d3设置line长度_万物皆可Embedding之LINE算法解读
  5. w3c html5 客户端缓存数据格式,Html5应用程序缓存(Cache manifest)
  6. 北京市交管局联合高德地图发布北京中考出行提示
  7. 第17课:郭盛华课程_VB编程之菜单界面的设计
  8. (微信编辑器)UEditor富文本嵌入135编辑器
  9. 网络安全技术 | 身份认证的革命——生物特征身份认证
  10. 自我介绍到底有多重要?如何做好自我介绍?
  11. 【ES实战】ES上的安全性运行方式
  12. React Native 布局实现测试
  13. 刚刚,Google AI 部门换帅,李飞飞宣布离职!
  14. 销 售 具 备 10 条
  15. 起价8万4!最强苹果电脑套装发布,iOS黑化,iPad独立 | 一文看尽WWDC大会
  16. 【TensorFlow 官网 可以直接访问】让中国开发者更容易地使用TensorFlow打造人工智能应用
  17. 【技法操作】PS制作计算器图标,UI设计教程
  18. C++中unique函数的用法总结
  19. 利用FDTD软件仿真拓扑光子(一)-前言
  20. 惠普预装linux的笔记本,紧随戴尔 惠普PC也要预装Linux

热门文章

  1. POJ 1716 Integer Intervals
  2. linux连接u盘是提示usb驱动错误,U盘提示无法访问,由于I/O设备错误,无法运行此项请求3种完美解决办法...
  3. win7桌面取消显示计算机,教您win7系统关闭右下角显示桌面功能的解决办法
  4. ecshop 支持 php,ecshop支持PHP7的修改方法
  5. python中的urllib库_Python2/3中的urllib库
  6. python实践项目(六)
  7. java 实现复制_在java中如何实现复制,粘贴,剪切
  8. 2019如何新建流程图_用Word制作流程图,居然还有这么多小技巧
  9. access vba 常量数组赋值_09c语言数组详解
  10. ai怎么画路线_AI换脸的本质是把颜值和表情分开