Laravel 9.28版本发布

2023-06-01 00:00:00 laravel 版本 发布

Laravel团队2022年9月7日发布了9.28版本,其中包含控制台信号陷阱、测试视图数据断言、防止静默丢弃可填充值等等:


将视图数据断言添加到TestView

Andrew Brown贡献了三种TestView断言方法来断言视图数据:

$view = $this->view('welcome', [
    'name' => 'Taylor',
    'email' => '[email protected]'
]);
 
$view->assertViewHas('name'); // true
$view->assertViewHas('name', 'Tyler'); // false
 
$view->assertViewHasAll(['name', 'email']); // true
$view->assertViewHasAll([
    'name' => 'Taylor',
    'email' => '[email protected]',
]); // true
 
$view->assertViewMissing('nonda'); // true
$view->assertViewMissing('name'); // false


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

D. Nagy Gergő在该类上贡献了一个getIntendedUrl()方法Redirector来获取和设置预期的重定向URL:

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


Eloquent mode模式,以防止静默丢弃属性填充

Ralph J. Smit提供了一种模型方法来防止丢弃填充,即使模型没有完全受到保护。

如果您在使用可填充字段的 Laravel 代码库上工作,这很有用,但您也不想默默地丢弃传递的数据。

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

Model::preventSilentlyDiscardingAttributes();
 
// Only prevent in non-production environments
Model::preventSilentlyDiscardingAttributes(
    ! app()->isProduction()
);


信号陷阱

Nuno Maduro贡献了信号陷阱的引入,它允许您捕获进程信号并在它们发生时执行代码:

$this->trap(SIGINT, function () {
    // End the command's job gracefully ...
    // E.g: clean created files, etc ...
 
    $this->continue = false;
});
 
// trap multiple signals
$this->trap([SIGTERM, SIGQUIT], function ($signal) {
 
    $this->running = false;
 
    dump($signal); // SIGTERM or SIGQUIT
});



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

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

// Before
Str::remove($months->toArray(), $someString);
 
// After with an Enumerable object
Str::remove($months, $someString);


发行说明

您可以在下面查看新功能和更新的完整列表,以及GitHub 上9.27.0 和 9.28.0之间的差异。

以下发行说明直接来自变更日志:

https://github.com/laravel/framework/compare/v9.27.0...v9.28.0
https://github.com/laravel/framework/blob/8549151449ee353a9a40adccb53820a89afa7c43/CHANGELOG.md#v9280---2022-09-06


v9.28.0

添加

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

修复

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

改变

允许调用规则来指定自定义消息 ( #43925 )
支持自定义模型转换的对象,如 GMP ( #43959 )
denyAsNotFound 上的默认 404 消息(#43901)
更改Illuminate/Container/Container::resolvePrimitive()为 isVariadic() ( #43985 )
允许验证器消息使用嵌套数组 ( #43981 )
确保 freezeUuids 在回调异常后始终重置 UUID 创建 ( #44018 )


转:

https://laravel-news.com/laravel-9-28-0

相关文章