Laravel 8.70 发布

Laravel

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 命令 (#391208fbfc9f)
  • 允许字符串对象作为中间件。 (#39439#39449)
  • 为编码数据引入 Js,以在 JavaScript 中使用。 (#39389#39460bbf47d5)
  • 为 sqlsrv 新增丢失链接错误信息。 (#39466)
  • 允许 can 方法链接到路由上以进行快速授权。 (#39464)
  • 发布在 stub:publish 命令中的 provider.stub。 (#39491)
  • 新增 Illuminate/Support/NamespacedItemResolver::flushParsedKeys()。 (#39490)
  • 在查询、更新、插入数据时允许使用枚举。 (#39492)
  • 对队列名称后缀的Fifo支持。 (#3949712e47bb)

改变了

  • 哪些缓存按需日志记录 (5afa0f1bc50a9b)
  • 强制隐式路由模型作用域 (#39440)
  • 确保事件互斥锁始终被删除 (#39498)
  • 将缺少的“标志”添加到redis zadd选项列表 (#39538)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-8-70-0

译文地址:https://learnku.com/laravel/t/62871

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!