Laravel 6.6.0 版本发布

Laravel 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
]);

其他代码调整和问题修复

完整的代码调整和问题修复记录如下:

新增特性

  • 支持在数据库相关表单验证规则中进行显式模型定义(#306539beceac
  • 允许通过 ResponseFactory::view() 返回第一个视图(#30651
  • 新增 Foundation\Testing\Concerns\InteractsWithDatabase::assertDeleted() 方法(#30648
  • 新增 Illuminate\Routing\Router::head()#30646
  • 新增 wherePivotNotIn()orWherePivotNotIn() 方法到 BelongsToMany#30671
  • SqlServerConnector 中新增选项参数以便通过 Azure Key Valut 对数据进行加密(#30636

问题修复

  • 修复 Illuminate\Http\Testing\FileFactory::create() 中的报错(#30632
  • 修复引起缺失参数被忽略的路由bug(#30659

代码调整

  • 更新 PhpRedisConnector::createClient() 中 redis 扩展未被加载时的错误信息(#30673, 184a0f4
  • 更新 windows_os() 辅助函数使用 PHP_OS_FAMILY#30660

声明:本文整理自 Laravel News

上一篇: Laravel 6.5.2 版本发布

下一篇: Laravel 6 之后新版本的发布周期介绍