分类目录归档:PHP

Laravel 5.5 为 Mailables 类型新增 theme 属性

在 Laravel 5.4 中 引入了 Markdown 邮件,使得我们在邮件中享受 Blade 模板的组件和 Slots 的同时,可以用 Markdown 语法编写电子邮件。

Laravel 自带了一系列预定义的组件,比如 headers, footers, buttons 以及 tables. 开发者可以很容易地在电子邮件模板中使用这些组件。

继续阅读

Laravel 5.5 在浏览器中渲染 Mailable 类型

Laravel 框架中提供了很方便快捷的面向对象风格的电子邮件相关功能,可以通过 Markdown 语法、Blade 模板引擎来制作邮件模板,然后通过扩展 Mailable 类来配置邮件相关的属性。最后通过 Mail::to() 方法即可快捷地发送邮件出去。有关邮件功能的详细实现可以参见官方文档. 但我们在制作自定义的邮件模板时,如何进行测试以确保在各种邮件客户端中正确显示,确是一个比较大的难题。尽管有一些类似 litmus 这样的工具可以解决邮件测试的问题,但是成本高昂。

继续阅读

本条目发布于。属于PHP分类,被贴了 标签。

Laravel 5.5 的 “vendor:publish” 新增 provider 提示

在以前的版本中,当使用 artisan vendor:publish 命令来发布扩展包的资源时,需要自己指定 --provider 参数或者 --tag 参数来确定要发布什么资源。比如 --provider="Barryvdh\Debugbar\ServiceProvider",用于发布指定 provider 包含的资源,或者 --tag=config 这样的命令。如果你什么参数都不加的话,默认会发布所有 provider 包含的所有资源(配置文件、视图、样式和JS等)。在 Laravel 5.5 中,做了一点增强,让使用上更方便了。

继续阅读

本条目发布于。属于PHP分类,被贴了 标签。

如何提前体验 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 正式发布之前先一步体验它,以及为自己的功能、扩展提前做出兼容准备呢?

继续阅读

本条目发布于。属于PHP分类,被贴了 标签。

写在 Laravel 5.5 发布之前

Laravel 5.5 将于 2017年7月发布,这将是继 Laravel 5.1 之后的下一个长期支持版本,相比之前发布的几个“中间版本”而言,意义重大。目前我在内部项目中已经在使用 Laravel 5.5,接下来会连续地翻译、撰写相关 Laravel 5.5 版本的文章。

继续阅读

本条目发布于。属于PHP分类,被贴了 标签。

[译]Laravel 5.0 之 Eloquent 属性转换

本文译自 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 实现,这意味着你要把你的数据存储为 01.

object

对象和数组是最有意思的选项。都是用把序列化为 JSON 格式数组的数据转换(反序列化)并返回。如果指定为 object, 那么是用 return json_decode($value) 实现的,返回一个 stdClass 类型的对象。

array

这个值是把 JSON 化的数组转换为 PHP 数组,用 return json_decode($value, true) 实现。

如果你需要看一下源代码,请点击这里

写在最后

如你所见, Eloquent 属性转换功能把我们从大量不必要的重复逻辑中解放出来,并且默默地让我们更容易在数据库中存储 JSON 数据。真是好东西!

[译]Laravel 5.0 之自定义错误页面

本文译自 Matt Stauffer系列文章.


在以往版本的 Laravel 中,假如你想自定义错误页面——比如当用户访问不存在的页面时显示一张猫的 GIF 动画图片——你可能会通过 Google 进行搜索,然后找到 Dries Vints 写的这个文档

在 Laravel 5 中,这个问题得到了改进。>>直达解决方案 继续阅读