Laravel团队发布了9.29和9.30,增加了只读文件系统选项,一个范围文件系统驱动,能够丢弃模型的变化,等等。
注意: 我们上次报道的是Laravel 9.28.0,所以这次发布的帖子同时涵盖了9.29和9.30。
只读文件系统配置选项
Frank de Jonge为配置文件系统磁盘以只读模式运行做出了贡献.这保证了磁盘上不可能有任何写操作,这在访问你想确保不对任何文件进行操作的存储时很有用。
下面是这个功能的拉动请求中的一个配置例子。
$disk = $filesystem->build([
'driver' => 'local',
'read-only' => true,
'root' => 'my-custom-path',
'url' => 'my-custom-url',
'visibility' => 'public',
]);
局限性文件系统驱动
Frank de Jonge贡献了范围内的文件系统驱动,这使得重用磁盘配置的方式成为可能。下面是拉动请求描述中的一个例子。
[
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
'throw' => false,
],
's3_videos' => [
'driver' => 'scoped',
'prefix' => 'path/for/videos',
'disk' => 's3',
],
]
在所有 "make "命令中添加强制选项
James Brooks为所有make:* 命令贡献了一个--force 标志,这在你需要重新创建一个文件时很有帮助。
"接受时需要 "验证规则
Pascal Baljet贡献了一个required_if_accepted 的验证规则,该规则确保在另一个字段被接受的情况下,被验证的字段是必须的(一个值为yes,on,1, 或true )。
Validator::make([
'is_company' => 'on',
'company_name' => 'Apple',
], [
'is_company' => 'required|boolean',
'company_name' => 'required_if_accepted:is_company',
]);
丢弃Eloquent模型变化的能力
Mior Muhammad Zaki贡献了一个discardChanges() 方法来丢弃属性变化并将属性重置为原始状态。
$user = new EloquentModelStub([
'name' => 'Taylor Otwell',
]);
$user->getOriginal('name'); // null
$user->getAttribute('name'); // Taylor Otwell
$user->discardChanges();
$user->getAttribute('name'); // null
确定附件是否存在
Andrew Minion贡献了确定给定的附件是否包含在一个可邮寄的文件中。增加了三个方法,可以帮助在测试中断言附件。
$mailable = new InvoicePaid($user);
// Test normal attachment.
$this->assertTrue(
$mailable->hasAttachment('Receipt.pdf')
);
// Test attachment from storage disk.
$this->assertTrue(
$mailable->hasAttachmentFromStorageDisk('s3', 'invoices', $user->latest_invoice->name)
);
// Test raw attachment.
$this->assertTrue(
$mailable->hasAttachedData('12345', 'confirmation.txt')
);
版本说明
你可以在GitHub上看到以下完整的新功能和更新列表以及9.28.0和9.30.0之间的差异。下面的发布说明直接来自更新日志。
v9.30.0
新增
- 为记录器添加了stop_buffering配置选项(#44071)。
- 添加了只读文件系统适配器装饰作为一个配置选项(#44079)。
- 增加了范围文件系统驱动(#44105)
- 为所有make命令添加强制选项(#44100)
修复了
- 修正了带有数组条件的QueryBuilder whereNot(#44083)
改变了
v9.29.0
已添加
- 已添加 RequiredIfAccepted 验证规则(#44035)
- 添加
Illuminate/Foundation/Vite::assetPath()(#44037) - 增加了丢弃Eloquent模型修改的功能(#43772)。
- 添加了确定附件是否存在的功能
Illuminate/Mail/Mailable(#43967) - 添加了
Illuminate/Support/Testing/Fakes/BusFake::assertNothingBatched()(#44056)
已恢复
修正了
- 避免在PHP8.1上传递null参数的异常(#43951)。
- 将 Remember Me Cookie 持续时间与 CookieJar 过期时间对齐(#44026)
- 修正Stringable类型提示与Enumerable(#44030)。
- 修复了中间件 "SetCacheHeaders "与文件响应(#44063)。