Laravel 9.41 发布

Laravel团队本周发布了9.41,其中包括软删除模型的验证规则、其他规则生成器便利方法、“when missing”请求方法等

"Only trashed" 数据库验证规则

Michael Nabil为数据库“Exists”和“Unique”规则提供了"onlyTrashed()"条件。这将仅针对软删除的行验证数据库:

Validator::make(
    [
        'name' => 'Michael Nabil',
    ],
    [
        'name' => [
            'required',
            Rule::exists('users')->where('id', $this->id)->onlyTrashed(),
            Rule::unique('users')->where('id', $this->id)->onlyTrashed(),  // Or
        ],
    ]
);

规则生成器方法

Michael Nabil 为图像、枚举、维度和唯一性提供了一些规则生成器方法:

// Before
$request->validate([
    'password' => Password::default(),
    'image' => File::default(),
    'status' => new Enum(StatusEnum::class),
    'name' => Rule::requiredIf(function () {
        return true;
    })
]);

// Now you can also do:
$request->validate([
    'password' => Password::default(),
    'image' => Rule::file()->default(),
    'status' => Rule::enum(StatusEnum::class),
    'name' => Rule::requiredIf(function () {
        return true;
    })
]);

请求表单值缺失时回调

@phh 为请求对象贡献了一个 whenMissing() 方法,当请求表单缺失时将调用该方法:

$request->whenMissing('name', function ($value) use (&$name) {
    $name = 'Taylor';
});

当表单值没有缺失时,此方法还可以接受默认的可调用对象。

Vite facade 上的自定义清单文件名

Nagesh TiwariTim MacDonald 贡献了自定义 Vite 清单文件名的能力。 API 的工作原理如下:

// Service provider
use Illuminate\Support\Facades\Vite;

Vite::useManifestFilename('custom-manifest.json');

现在在 Blade 中,将使用自定义清单文件名:

{{-- Uses the custom manifest filename --}}

@vite(['resources/js/app.js'])

{{-- Inline example --}}
{{ Vite::useManifestFilename('custom-manifest.json')->withEntryPoints(['resources/js/app.js']) }}

发行说明

你可以在 GitHub 上看到新功能和更新的完整列表以及 9.40.0 and 9.41.0 之间的差异。下面的发行说明直接来自 changelog:

v9.41.0

新增

  • 添加了 Illuminate/Validation/Rules/DatabaseRule::onlyTrashed() (#44989)
  • 在类规则中添加了一些规则 (#44998)
  • 添加了 Illuminate/View/ComponentAttributeBag::missing() (#45016)
  • 添加了 Illuminate/Http/Concerns/InteractsWithInput::whenMissing() (#45019)
  • 向 SQL Server 连接器添加了隔离级别 (#45023)
  • 修复 php artisan serve 与 PHP_CLI_SERVER_WORKERS > 1 运行时异常(#45041)
  • 添加修剪已取消任务批次的功能 (#45034)
  • 在 Vite Facade 上添加自定义文件名清单的选项 (#45007)

修复

  • 修复比较NULL数据库密码时的弃用警告 (#44986206e465)
  • Outlook 网页暗模式电子邮件布局修复 (#45024)

已更改

  • 改善 queue:work 命令输出 (#44971)
  • 优化集合::containsStrict (#44970)
  • 在 ' Illuminate/Testing/TestResponse::assertRedirectToRoute() '中指定名称 (98a0301)
  • 从 aws 客户端的根配置选项中剥离密钥、秘密和令牌 (#44979)
  • 允许定制实现 SendQueuedMailable 作业 (#45040)
  • 在查询路由绑定前验证uuid (#44945)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

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

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

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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