Laravel 9.28 发布

Laravel 团队发布了 9.28,其中包含控制台信号捕获、测试视图数据断言、防止 Eloquent 静默丢弃 fillable 以外的数据等等:

将视图数据断言添加到 TestView

Andrew Brown 贡献了 3 个 TestView 断言视图数据的断言方法:

$view = $this->view('welcome', [
    'name' => 'Taylor',
    'email' => 'user@example.com'
]);

$view->assertViewHas('name'); // true
$view->assertViewHas('name', 'Tyler'); // false

$view->assertViewHasAll(['name', 'email']); // true
$view->assertViewHasAll([
    'name' => 'Taylor',
    'email' => 'user@example.com',
]); // true

$view->assertViewMissing('nonda'); // true
$view->assertViewMissing('name'); // false

从重定向器获取预期的会话 URL

D. Nagy Gergő 贡献了 getIntendedUrl() 方法来获取和设置预期的重定向 URL:

$redirect->setIntendedUrl('http://foo.com/bar');
$redirect->getIntendedUrl(); // http://foo.com/bar

Eloquent 以防止静默丢弃不在 fillable 中的字段

Ralph J. Smit 贡献了一个模型方法来防止丢弃 $fillable 以外的数据,即使模型没有完全受到保护。 当你的模型设置了 $fillable 又不想丢弃 $fillable 之外的数据时,这非常有用。

该模型可以通过几种方式切换; 例如:可以使用环境仅在非生产环境中触发异常:

Model::preventSilentlyDiscardingAttributes();

// 仅在非生产环境中防止
Model::preventSilentlyDiscardingAttributes(
    ! app()->isProduction()
);

信号捕获

Nuno Maduro 贡献了信号捕获,允许你捕获进程信号并在它们发生时执行代码:

$this->trap(SIGINT, function () {
    // 优雅地结束命令的工作......
    // 例如清理创建的文件等...

    $this->continue = false;
});

//  捕获多个信号
$this->trap([SIGTERM, SIGQUIT], function ($signal) {

    $this->running = false;

    dump($signal); // SIGTERM 或 SIGQUIT
});

支持将 Enumerable 对象传递给 Stringable 方法

Erik Gaal 贡献了将可枚举对象传递给 Stringable 辅助函数的功能:

// 之前
Str::remove($months->toArray(), $someString);

// 使用 Enumerable 对象之后
Str::remove($months, $someString);

发行日志

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

v9.28.0

新增

  • 向 TestView 添加了视图数据断言 (#43923)
  • 新增 Illuminate/Routing/Redirector::getIntendedUrl() (#43938)
  • 添加了 Eloquent 模式以防止默默地丢弃不在 $fillable 中的属性的数据 (#43893)
  • 添加了 Illuminate/Testing/PendingCommand::assertOk() (#43968)
  • 使应用程序可使用 macro (#43966)
  • 介绍信号捕获 (#43933)
  • 允许注册命令实例(#43986)
  • 支持 Stringable 中的 Enumerable (#44012)

修复

  • 修复了 RoueGroup::merge 以正确格式化合并的前缀。 (#44011)
  • 修复了 AwsS3V3Adapter 上的提供临时 URL (#44009)
  • 修复使用 @vite 时样式表的顺序 (#43962)

更新

  • 允许调用规则来指定自定义消息 (#43925)
  • 支持自定义模型转换的对象,如 GMP (#43959)
  • 默认 404 消息在 denyAsNotFound (#43901)
  • 为 isVariadic() 更改了Illuminate/Container/Container::resolvePrimitive() (#43985)
  • 允许验证器消息使用嵌套数组 (#43981)
  • 确保 freezeUuids 在创建回调异常后始终重置 UUID (#44018)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

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

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

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

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