Laravel 9.23 发布

Laravel 团队发布了 9.23 版本,其中包含一个 artisan docs 命令、对 CSP/SRI 的 Vite 支持、一个新的流畅的 JSON 断言方法等等。让我们来看看最新的 Laravel 9 版本:

Artisan docs 命令

Tim MacDonald  贡献了一个令人惊叹的 artisan docs命令,让开发人员能够从命令行快速访问网站文档:

# 打开一个您可以用来键入所需内容的选择对话框
php artisan docs

# 打开验证文档
php artisan docs validation

事情变得非常疯狂,比如你想要转到验证文档页面上的 唯一 验证规则:

php artisan docs validation unique

# 部分搜索将打开唯一验证规则
php artisan docs va un

以下是不将页面传递给命令时的默认行为示例:

Laravel

Fluent JSON whereNot 断言

Mateus Guimarães 提供了一个 whereNot() JSON 测试断言:

$response
    ->assertJson(fn (AssertableJson $json) =>
        $json->where('id', 1)
             ->where('name', 'Victoria Faith')
             ->whereNot('status', 'pending')
             ->missing('password')
             ->etc()
    );

悄悄删除一个model

Anjorin Damilare 提供了一个 deleteQuietly() 模型方法,可以在不引发任何事件的情况下从数据库中删除模型:

use App\Models\Flight;

$flight = Flight::find(1);

$flight->deleteQuietly();

有条件的特征添加到文件系统适配器

Ralph J. Smit 贡献了将 Conditionable 特征添加到文件系统以允许您使用 when()unless( ) 方法:

Storage::disk('public')
    ->when(true)
    ->delete('StardewTaylor.png');

Vite 支持 CSP、SRI 和任意值

Tim MacDonald 为 Vite 实现提供了第一方支持,以创建将用于所有生成的脚本和样式标签的随机数:

use Illuminate\Support\Facades\Vite;

class ContentSecurityPolicy
{
    public function handle($request, $next)
    {
        // 你需要在 **before** 调用此函数
        // 这样第 3 方就可以在整个请求中使用相同的 nonce
        // 生命周期齐吉

        Vite::useCspNonce();

        return $next($response)->withHeaders([
            'Content-Security-Policy' => "script-src 'nonce-".Vite::cspNonce()."'",
        ]);
    }
}

这个主题非常繁重,所以我建议阅读 Pull Request #43442 上的描述以获取完整的详细信息。 此外,Laravel Vite 文档已更新 Script & Style Tag Attributes 部分,以帮助你入门。

发行说明

你可以在下面查看新功能和更新的完整列表以及 9.22.0 and 9.23.0 在 GitHub 上。以下发行说明直接来自 changelog:

v9.23.0

Added

  • 为 Fluent JSON 测试匹配器添加 whereNot 方法 (#43383)
  • 为 Model 添加 deleteQuietly 方法,并为相关方法使用箭头函数 (#43447)
  • 为文件系统适配器添加了条件特性 (#43450)
  • 引入 artisan docs 命令 (#43357)
  • 添加了对 Vite 的支持 CSP nonce、SRI 和任意属性 (#43442)
  • 支持从目标对象获取条件的条件 (#43449)
  • whereIn添加到 Illuminate/Routing/RouteRegistrar::allowedAttributes (#43509)

Fixed

  • 防止在特定时间安排大量作业时 redis 崩溃 (#43310)

Changed

  • 使命令组件工厂可扩展 (#43439)
  • 解决刀片组件显示为控制台格式化的报价 (#43446)
  • 改进了服务命令的输出捕获 (#43461)
  • 允许更简洁的单例绑定 (#43469)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-9-23-0

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

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

我天,这速度,赶上中国基建的速度了

1年前 评论
mengdodo

laravel9下打 route:list不显示中间件, 得 route:list -v

1年前 评论

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