Laravel 8.70 发布
Laravel 团队发布了一个8.70的路由定义 can ()方法,一个 JavaScript 编码的 Js 类,一个在模型和控制器旁边生成表单请求类的标志,以及 v8.x 分支的最新变化:
在路由定义中允许 "can" 中间件链接
为了方便起见,Taylor Otwell 提供了一个用于路由定义的 can ()
方法。 中间件授权 文档有一个使用这种方法的例子:
// 使用中间件方法
Route::put('/post/{post}', function (Post $post) {
// 当前用户允许更新 post...
})->middleware('can:update,post');
// 使用新的 can() 方法
Route::put('/post/{post}', function (Post $post) {
// 当前用户允许更新 post...
})->can('update', 'post');
Laracasts 也有一个关于这个特点的短视频:
用 JavaScript 编码数据
@TinaH ,Chris Morrell, 和其他一些人合作开发了一个新的 JS
类 , 用于在 HTML 引号中正确地转义 JSON,从而使用 JSON.parse
创建了一个 JS 对象:
<script>
var app = {{ Illuminate\Support\Js::from($array) }};
</script>
{{-- The latest Laravel application skeleton includes a JS facade --}}
<script>
var app = {{ Js::from($array) }};
</script>
如果你想在现有的 Laravel 8 项目中使用这个包,你可以在升级到 Laravel 8.70后在 config/app.php 别名键 aliases
中添加以下内容:
// config/app.php
return [
'aliases' => [
// ...
'Js' => Illuminate\Support\Js::class,
],
];
请求用于 make:controller 和 make:model 的标志
Povilas Korop 贡献了一个新的 --requests
(简写版本是 -R
)标志,它创建了一个 FormRequest
类并立即在生成的控制器中使用它 .
这是来自拉取请求的示例命令:
php artisan make:controller UserController \
--resource \
--model=User \
--requests
强制执行隐式路由模型范围
Claudio Dekker 贡献了一个范围界定功能,以告诉框架将第二个 Eloquent 模型的范围界定为同一路线中前一个 Eloquent 模型的子代,而无需提供 slug。 Taylor Otwell 还对原始 PR 进行了一些调整,以允许以下语法:
use App\Models\Post;
use App\Models\Comment;
Route::get('/posts/{post}/comments/{comment}', function (Post $post, Comment $comment) {
return $comment;
})->scopeBindings();
// 或者
Route::scopeBindings()->group(function () {
Route::get('/posts/{post}/comments/{comment}', function (Post $post, Comment $comment) {
return $comment;
});
});
查看这个 PR 以了解讨论和实施的详情。此功能的文档在 路由 - 自定义秘钥和作用域。
版本说明
你可以在 Github 上查看完整的功能更新列表和 8.69.0 与 8.70.0 之间 的区别。以下的发行说明来自 changelog :
v8.70.0
Added
- 新标记:
--requests
-R
变为make:controller
和make:model
命令 (#39120, 8fbfc9f) - 允许字符串对象作为中间件。 (#39439, #39449)
- 为编码数据引入
Js
,以在 JavaScript 中使用。 (#39389, #39460, bbf47d5) - 为 sqlsrv 新增丢失链接错误信息。 (#39466)
- 允许 can 方法链接到路由上以进行快速授权。 (#39464)
- 发布在 stub:publish 命令中的
provider.stub
。 (#39491) - 新增
Illuminate/Support/NamespacedItemResolver::flushParsedKeys()
。 (#39490) - 在查询、更新、插入数据时允许使用枚举。 (#39492)
- 对队列名称后缀的Fifo支持。 (#39497, 12e47bb)
改变了
- 哪些缓存按需日志记录 (5afa0f1, bc50a9b)
- 强制隐式路由模型作用域 (#39440)
- 确保事件互斥锁始终被删除 (#39498)
- 将缺少的“标志”添加到redis zadd选项列表 (#39538)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。