Laravel 8.45 添加了 Blade Echo 处理器、便捷的模型广播和下载断言
发布于 作者: Paul Redmond
Laravel 团队发布了 v8.45.0,其中包含自定义 Blade echo 处理器、模型广播、下载断言以及 8.x 分支的最新变化。
自定义 Blade Echo 处理器
Luke Downing 贡献了自定义 Blade echo 处理器,它使您能够在无法控制 __toString()
魔术方法的情况下输出对象的字符串表示形式。
以下来自 文档 的示例有助于说明其工作原理。
use Money\Money; Blade::stringable(function (Money $money) { return $money->formatTo('en_GB');});
注册“可字符串化”回调后,您可以在 Blade 模板中以预期的方式输出对象,使用自定义闭包代替对象上的 __toString()
。
Cost: {{ $money }}
查看 自定义 echo 处理器 以了解有关使用此功能的完整详细信息。
模型广播
Taylor Otwell 贡献了更方便的 模型广播 功能,该功能引入了指示 Eloquent 模型应自动广播状态变化的能力。
当应用程序的 Eloquent 模型 被创建、更新或删除时,通常会广播事件。当然,可以通过手动 为 Eloquent 模型状态变化定义自定义事件 并在这些事件上标记 ShouldBroadcast 接口来轻松实现这一点。
但是,如果您不在应用程序中出于任何其他目的使用这些事件,那么仅出于广播目的而创建事件类可能会很麻烦。为了解决这个问题,Laravel 允许您指示 Eloquent 模型应自动广播其状态更改。
要使用此功能,您的模型将实现 BroadcastsEvents
特性,并将与 broadcastOn()
方法协同工作。
namespace App\Models; use Illuminate\Broadcasting\PrivateChannel;use Illuminate\Database\Eloquent\BroadcastsEvents;use Illuminate\Database\Eloquent\Factories\HasFactory;use Illuminate\Database\Eloquent\Model; class Post extends Model{ use BroadcastsEvents, HasFactory; /** * Get the user that the post belongs to. */ public function user() { return $this->belongsTo(User::class); } /** * Get the channels that model events should broadcast on. * * @param string $event * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn($event) { return [$this, $this->user]; }}
查看 模型广播 文档以了解有关此功能的完整详细信息。
下载断言
Tanmay Mishu 贡献了断言测试响应是下载的能力。
// Assert the response returned a download$response->assertDownload(); // Assert the response is a download with a given file name.$response->assertDownload('invoice.pdf');
此功能使测试来自 Response::download
、BinaryFileResponse
或 Storage::download
的各种类型的文件响应变得更加容易。查看 断言下载 在测试文档中。
了解更多
您可以在下面查看新功能和更新的完整列表以及 8.44.0 和 8.45.0 之间的差异。