Laravel 5.2 发布了!
发布于 作者: Eric L. Barnes
Laravel 5.2 现已正式发布,所有人都可以使用。 此版本包含多个身份验证驱动程序支持、隐式模型绑定、简化的 Eloquent 全局范围、选择性身份验证脚手架、中间件组、速率限制中间件、数组验证改进等。
让我们更深入地了解其中的一些新功能
身份验证脚手架
身份验证脚手架将自动创建一组用于身份验证、注册和密码重置的基本视图文件,可以通过以下方式运行:
php artisan make:auth
隐式模型绑定
隐式模型绑定是一项新功能,它会自动将模型绑定到路由。 以下是用代码演示的示例
Route::get('/api/posts/{post}', function(Post $post) { return $post;});
这在幕后调用 Post::findOrFail($post)
,并将它注入到 $post 变量中。 对于经验丰富的 Laravel 开发者来说,这类似于现有的 路由模型绑定,但现在不需要手动绑定。
追加来自计划任务的输出
Laravel 调度程序 现在可以将来自任务的输出追加到文件中。
$schedule->command('emails:send') ->hourly() ->appendOutputTo($filePath);
以前,Laravel 包含一个 sendOutputTo
选项,该选项会写入当前结果,但不会追加。
Laravel 5.2 表单数组验证
假设您有一个带有数组输入字段的表单,如下所示
<p><input type="text" name="person[1][id]"><input type="text" name="person[1][name]"></p><p><input type="text" name="person[2][id]"><input type="text" name="person[2][name]"></p>
在 Laravel 5.1 中,要添加验证规则,需要遍历并分别添加规则。 不用再这样做,而是可以将它“Laravel 化”为以下代码
$v = Validator::make($request->all(), [ 'person.*.id' => 'exists:users.id', 'person.*.name' => 'required:string',]);
集合通配符
在使用集合并想要提取数据时,现在可以传递 *
作为通配符
$posts->pluck('posts.*.title');
这将返回所有帖子的所有标题。
数据库会话驱动程序
数据库会话驱动程序现在包含 user_id
和 ip_address
,因此您可以轻松地清除给定用户的会话。
中间件组
中间件组允许您将多个路由中间件分组到一个方便的键下,使您可以一次性将多个中间件分配给路由。 例如,这在同一个应用程序中构建 Web UI 和 API 时非常有用。 您可以将会话和 CSRF 路由分组到一个 web 组中,并且可能将速率限制器分组到 api 组中。
速率限制
框架现在包含一个新的速率限制中间件,允许您轻松地限制给定 IP 地址在指定分钟数内可以对路由发出的请求数量。 例如,要将路由限制为每分钟从单个 IP 地址发出 60 个请求,您可以执行以下操作
Route::get('/api/users', ['middleware' => 'throttle:60,1', function () { //}]);
Eloquent 全局范围
在以前的 Laravel 版本中,全局 Eloquent 范围的实现很复杂且容易出错; 但是,在 Laravel 5.2 中,全局查询范围只需要实现一个简单的方法:apply。
有关编写全局范围的更多信息,请查看完整的 Eloquent 文档。