Laravel 9.35 发布

Laravel 团队发布了9.35版本,它有一个新的令人兴奋的备用邮件语法、一个Eloquent的 “严格模式” 功能等。

备用邮件语法

Taylor Otwell 通过返回 “指定可邮件内容和属性的精简对象”,贡献了一个可邮件语法。

这是他的一个例子 pull request description:

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Address;
use Illuminate\Mail\Mailables\Attachment;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class InvoicePaid extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * 创建一个邮件实例
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * 获取邮件信封
     *
     * @return \Illuminate\Mail\Mailables\Envelope
     */
    public function envelope()
    {
        return new Envelope(
            subject: 'Invoice Paid',
            cc: [new Address('foo@example.com', 'Example Name')],
            tags: [],
            metadata: [],
        );
    }

    /**
     * 获取邮件内容定义
     *
     * @return \Illuminate\Mail\Mailables\Content
     */
    public function content()
    {
        return new Content(
            view: 'html-view-name',
            text: 'text-view-name',
        );
    }

    /**
     * 获取邮件的附件
     *
     * @return \Illuminate\Mail\Mailables\Attachment[]
     */
    public function attachments()
    {
        return [
            Attachment::fromPath('/path/to/file'),
        ];
    }
}

使用build() 定义邮件的传统方式不会被删除。 我喜欢上面的例子是因为使用 PHP 8 的命名参数更一目了然。

Eloquent “严格”模式

Chris MorrellTaylor Otwell 合作开发了 Eloquent 严格模式,该模式支持以下功能:

  • 没有延迟加载
  • 分配不可填充属性时的例外情况
  • 访问未检索或不存在的属性的异常

要在开发中使用严格模式,方法是将以下内容添加到已注册服务提供者的 boot() 方法中:

Model::shouldBeStrict();

shouldBeStrict() 方法是启用以下所有功能的快捷方式:

Model::preventLazyLoading();
Model::preventSilentlyDiscardingAttributes();
Model::preventsAccessingMissingAttributes();

使用资源路由加载废弃模型

Andrew Brown 提供了使用以下路由语法加载带有资源路由的废弃模型的能力:

// 所有终结点
Route::resource('users', UserController::class)->withTrashed();

// 仅`显示`
Route::resource('users', UserController::class)->withTrashed(['show']);

发行说明

你可以在GitHub上看到下面完整的新功能和更新列表以及[9.34.0]和9.35.0](github.com/laravel/framework/compa...) 之间的区别。以下发行说明直接来自 changelog:

v9.35.0

添加

  • 允许为资源路由加载废弃模型 (#44405)
  • 添加到 Illuminate/Database/Eloquent/Model::shouldBeStrict() 和其他 (#44283)
  • 没有解析控制器的控制器中间件 (#44516)
  • 选择可邮寄的语法 (#44462)

修复

  • 修复自引用多对多关系中的聚合函数(withSum 等)问题(#44286)
  • 修复了使用静态类属性作为模板属性的问题 (#44473)
  • Traversable 在 Enumerate Values 中应该优先于 JsonSerializable(#44456)
  • 修复了make:cast --inbound,所以它是一个布尔选项,而不是值 (#44505)

修改

  • 测试方法。 使用 json_encode 使错误消息更具可读性(#44397)
  • Model::without Timestamps() 返回回调的返回值 (#44457)
  • 仅在相关路由上加载废弃模型(#44478)
  • 向 shouldBlockPhpUpload 函数添加额外的 PHP 扩展 (#44512)
  • 为特别嘈杂的对象注册 cutInternals casters (#44514)
  • 使用 get 方法访问应用程序区域设置 (#44521)
  • 仅返回来自频道的非空响应 (09d53ee3944a3e)
  • 正确的频道匹配 (#44531)
  • 迁移邮件组件 (#44527)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-9-35-0

译文地址:https://learnku.com/laravel/t/72658

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 5

厉害了,翻译赶不上更新速度

1年前 评论
MArtian 1年前
tomcath (作者) 1年前
MArtian 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!