Laravel v5.3.19 正式发布了,包含了一些小的改动和提升,以及中间件顺序的完全重写,以便带参数中间件可以正常的运行。
PHP Artisan make:model
一个新添加的功能是在使用 Artisan 命令创建 Model 的同时可以指定创建一个资源控制器。这意味着你可以给 make:model 传递一个 -c 或 --controller 参数。
php artisan make:model Post --controller
Laravel 图片尺寸验证
Laravel v5.3 一个新的功能是验证图片文件满足特定的尺寸,验证规则可以写为下面的字符串格式:
'avatar' => 'dimensions:min_width=100,min_height=200,ratio=3/2'
现在,在 v5.3.19 中可以用一种类似 unique 和 exists 验证规则 的流畅的语法来指定了:
Rule::dimensions()->minWidth(100)->minHeight(100)->ratio(3/2)
Laravel in 和 not_in 验证
Laravel 的 in 和 not_in 验证可以接受传递一个数组的能力:
// 之前
in:php,laravel,...
// 现在
Rule::in(['php','laravel'])
// 之前
not_in:php,laravel,...
// 现在
Rule::notIn(['php', 'laravel'])
两种样式都是有效的,并且新的基于对象的样式会解析为旧的样式,所以你可以根据自己的喜好自由选择。
验证后的钩子
现在你的控制器可以有一个 withValidator 方法,以便在验证之后调用任何钩子:
protected function withValidator($validator)
{
$validator->after(function($validator) {
if ($this->somethingElseIsInvalid()) {
$validator->errors()->add('field', 'Something is wrong with this field!');
}
});
}
之前如果你想在验证后使用一个钩子,那必须在使用前手动的设置 $validator = Validator::make(),这就意味着你失去了利用 ValidatesRequests trait 的能力。
升级 Laravel
想要获取这个最新版本,你只需运行 composer update,你可以在 ChangeLog 中看到完整的变更列表。