Laravel 6.6.0 版本发布
Laravel 开发团队上周发布了 v6.6.0 版本,包含了一系列的功能优化和问题修复。
动态视图优化
其中一个新增的特性是 ResponseFactory::view()
现在可以返回第一个视图:
return response()->view(['my/view1', 'my/view2'], ['data'], 404, ['headers']);
关于动态视图功能早在 Laravel 5.5 中就提供了支持,只不过在此之前需要通过 view()->first()
返回第一个视图,没有使用过该功能的同学可能看起来比较懵,下面学院君给大家简单介绍下。
我们在构建网站页面模块的时候,有些页面比如“关于我们”、“联系我们”可能需要一个自定义的模板,而另一些页面比如“服务条款“使用默认模版即可。在 Laravel 5.5 之前,要实现这样的功能,需要通过 view()->exists()
判断自定义视图模板是否存在并进行相应的渲染:
if (view()->exists('custom-template')) {
return view('custom-template', $data);
}
return view('default-template', $data);
而在 Laravel 5.5 及之后版本,可以通过下面这个更简洁的方式实现同样的功能:
return view()->first(
['custom-template', 'default-template'], $data
);
这里的 default-template
类似兜底视图,当第一个视图不存在的时候才返回它。
当然,你还可以传递更多视图模板,只需要将默认视图模板置于最后即可:
return view()->first([
"pages/{$page->slug}",
"pages/category-{$page->category->slug}",
"pages/default-template"
], $data);
同理,View::first()
也支持同样的用法。
回到 Laravel 6.6.0,动态视图功能不是该版本新增的,只是在 response()->view()
中支持了该特性而已。
数据库测试优化
另一个新增的特性是用于数据库测试的 assertDeleted
方法,现在可以通过如下代码:
$this->assertDeleted($post);
简化之前的:
$this->assertDatabaseMissing('posts', [
'id' => $post->id
]);
其他代码调整和问题修复
完整的代码调整和问题修复记录如下:
新增特性
- 支持在数据库相关表单验证规则中进行显式模型定义(#30653,9beceac)
- 允许通过
ResponseFactory::view()
返回第一个视图(#30651) - 新增
Foundation\Testing\Concerns\InteractsWithDatabase::assertDeleted()
方法(#30648) - 新增
Illuminate\Routing\Router::head()
(#30646) - 新增
wherePivotNotIn()
和orWherePivotNotIn()
方法到BelongsToMany
(#30671) - 在
SqlServerConnector
中新增选项参数以便通过 Azure Key Valut 对数据进行加密(#30636)
问题修复
代码调整
- 更新
PhpRedisConnector::createClient()
中 redis 扩展未被加载时的错误信息(#30673, 184a0f4) - 更新
windows_os()
辅助函数使用PHP_OS_FAMILY
(#30660)
声明:本文整理自 Laravel News。
No Comments