在 Laravel 5.4 中 引入了 Markdown 邮件,使得我们在邮件中享受 Blade 模板的组件和 Slots 的同时,可以用 Markdown 语法编写电子邮件。
Laravel 自带了一系列预定义的组件,比如 headers
, footers
, buttons
以及 tables
. 开发者可以很容易地在电子邮件模板中使用这些组件。
在 Laravel 5.4 中 引入了 Markdown 邮件,使得我们在邮件中享受 Blade 模板的组件和 Slots 的同时,可以用 Markdown 语法编写电子邮件。
Laravel 自带了一系列预定义的组件,比如 headers
, footers
, buttons
以及 tables
. 开发者可以很容易地在电子邮件模板中使用这些组件。
在以前的版本中,当使用 artisan vendor:publish
命令来发布扩展包的资源时,需要自己指定 --provider
参数或者 --tag
参数来确定要发布什么资源。比如 --provider="Barryvdh\Debugbar\ServiceProvider"
,用于发布指定 provider 包含的资源,或者 --tag=config
这样的命令。如果你什么参数都不加的话,默认会发布所有 provider 包含的所有资源(配置文件、视图、样式和JS等)。在 Laravel 5.5 中,做了一点增强,让使用上更方便了。
Laravel 5.5 再过一个多月就要发布了,这将是 Laravel 框架的下一个 LTS release(长期支持版),对于喜欢追求最新版本的 Laravel 开发者来说,现在肯定已经至少都升级到 Laravel 5.4 了,接下来升级到 Laravel 5.5 自然是理所当然的事情,但是对于追求稳定和长期技术支持的人来说,即使依然在使用 Laravel 5.1, 面对这个新的长期支持版,吸引力甚至比其它更新版本的用户更大,因为自 5.1 以后,Laravel 在 5.2, 5.3, 5.4版本中,已经提供了一系列非常有吸引力的新特性。一步到位升级到 5.5, 就可以体验这些极大提升开发效率的新特性,也能轻易实现很多原本比较麻烦的功能。那么,如何在 Laravel 5.5 正式发布之前先一步体验它,以及为自己的功能、扩展提前做出兼容准备呢?
Laravel 5.5 将于 2017年7月发布,这将是继 Laravel 5.1 之后的下一个长期支持版本,相比之前发布的几个“中间版本”而言,意义重大。目前我在内部项目中已经在使用 Laravel 5.5,接下来会连续地翻译、撰写相关 Laravel 5.5 版本的文章。
本文译自 Matt Stauffer 的系列文章.
之前完全忘了要把这个 Laravel 5 的系列博客写完,不过最近看到了一篇关于属性转换的简介 Laravel 5 Eloquent Attribute Casting is Awesome, 所以我决定把这个特性加到我的系列文章中。官方文档的 Eloquent 相关部分在这里。
转换一个属性值的意思是把它转换成某个特定的数据类型(或者是为了确保它是某个特定的数据类型)。数据类型我们都很熟悉了,比如 integer
或者 boolean
.
属性转换是 Eloquent 模型的一个功能特性,这个特性让我们可以赋予 Eloquent 模型中的某个属性转换为一个特定的数据类型。
提示:在以前版本中也可以这样做,但是必须为每个属性定义一个自动赋值的方法。而在新版本中可以通过单一的数组配置让模型自动完成这些工作。
这意味着假如你的数据是以特定的格式存储在数据库中,而你在使用时需要的是另外一种格式,现在你可以配置 Eloquent 模型自动完成两种格式之间的转换工作。
最常见的应用场景可能是:当你存储数字的时候——它们默认是返回字符串,但 Eloquent 属性转换可以帮你把字符串转换为 integer
, real
, float
或者 double
,当然还可以转换为 boolean
.
但这就是全部了吗?当然不是。
要应用属性转换这个功能,你需要在你的模型中添加一个 protected $casts
的数组变量。
<pre class="brush:php">
/**
* The attributes that should be casted to native types.
*
* @var array
*/
protected $casts = [
'is_admin' => 'boolean',
];
如上面代码所示,数组中的每个元素以属性名为 key, 要转换的目标类型为 value. 这个数组变量 $casts
的作用就是告诉 Eloquent:“每次当我访问这个模型中的 is_admin
属性的时候,返回一个类型为 boolean
的值给我”。
integer
(int
)这会把你指定的属性值转换为整形,通过 return (int) $value
来实现。
float
(real
|double
)Real, Float 和 Double 在 PHP 中是同一种类型。 PHP 的 (double)
和 (real)
类型转换都是 (float)
的别名。所以指定为这三种时,其实在代码中都是通过 return (float) $value
来实现的。
string
这个很简单,就是把你指定的属性值转为字符串返回,用的是 return (string) $value
.
boolean
(bool
)这是把你指定的属性值转换为布尔值返回,用 return (bool) $value
实现,这意味着你要把你的数据存储为 0
和 1
.
object
对象和数组是最有意思的选项。都是用把序列化为 JSON 格式数组的数据转换(反序列化)并返回。如果指定为 object
, 那么是用 return json_decode($value)
实现的,返回一个 stdClass 类型的对象。
array
这个值是把 JSON 化的数组转换为 PHP 数组,用 return json_decode($value, true)
实现。
如果你需要看一下源代码,请点击这里。
如你所见, Eloquent 属性转换功能把我们从大量不必要的重复逻辑中解放出来,并且默默地让我们更容易在数据库中存储 JSON 数据。真是好东西!
本文译自 Matt Stauffer 的系列文章.
在以往版本的 Laravel 中,假如你想自定义错误页面——比如当用户访问不存在的页面时显示一张猫的 GIF 动画图片——你可能会通过 Google 进行搜索,然后找到 Dries Vints 写的这个文档。
本文译自 Matt Stauffer 的系列文章.
创建一个事件及其处理程序,再把两者关联起来,或者创建一个命令及其处理程序,再把两者关联起来。有时候这看起来需要大量的工作。因此我经常期望能有一个工作流可以把所有这些工作整合在一起来处理。 继续阅读