Laravel 10.14 发布

发布于 作者:

Laravel 10.14 Released image

本周,Laravel 团队发布了 v10.14,其中包含一个新的 `can` 验证规则、定义自定义 Gate 拒绝响应、全局 HTTP 客户端中间件、HTTP 客户端便捷方法等

`can` 验证规则

Steve Bauman 贡献了 `Rule::can()` 验证规则,它提供了一种为给定表单字段授权能力的方法。以下是 Pull Request #47371 中给出的示例。假设有以下 `PostPolicy`

// Given the following policy
class PostPolicy
{
// ...
 
public function updateAuthor(User $user, Post $post)
{
return $user->isAdmin();
}
}

我们可以验证用户是否有权更新作者

use App\Models\Post;
 
class PostRequest extends FormRequest
{
public function rules()
{
return [
'author' => Rule::can('update-author', Post::class, $this->route('post')),
'title' => '...',
'body' => '...',
];
}
}

在 `Gate@inspect()` 中设置自定义拒绝响应

Luke Kuzmish 贡献了当 Gate 的 `inspect()` 方法失败时设置返回响应的能力。例如,当与 `can()` 中间件结合使用时

class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Gate::setDenialResponse(Response::denyAsNotFound());
}
}

全局 HTTP 中间件

Tim MacDonald 贡献了定义全局 HTTP 客户端中间件的能力,该中间件将应用于使用 HTTP 客户端发出的每个请求

// In a service provider...
 
use Illuminate\Support\Facades\Http;
 
// Global request middleware
Http::globalRequestMiddleware(
fn ($request) => $request->withHeader('User-Agent', 'Laravel Framework/1.0')
);
 
// Global response middleware
Http::globalResponseMiddleware(
fn ($response) => $response->withHeader('X-Finished-At', now()->toDateTimeString())
);
 
// Complete global middleware that wraps both request and response
Http::globalMiddleware(function ($handler) {
return function ($request, $options) use ($handler) {
$startedAt = now();
 
return $handler($request, $options)
->then(fn ($response) => $response->withHeader(
'X-Duration', $startedAt->diffInMilliseconds(now())
));
};
});

您还可以定义一次性中间件 - 查看 Pull Request #47525 中的所有详细信息,以了解可能的选项!

向 `PendingRequest` 添加 `withHeader()` 方法

Ralph J. Smit 贡献了一个 `withHeader` 方法,用于在使用 HTTP 客户端时设置单个标头

// Using an array
Http::baseUrl(config('services.active-campaign.endpoint') . '/api/3')
->withHeaders([
'Api-Token' => config('services.active-campaign.token')
])
->acceptJson();
 
 
// Setting a single header using `withHeader()`
Http::baseUrl(config('services.active-campaign.endpoint') . '/api/3')
->withHeader('Api-Token', config('services.active-campaign.token'))
->acceptJson();

向 HTTP 客户端添加 `withQueryParameters` 方便方法

Matthieu Napoli 贡献了一个 `withQueryParameters()` 方法,作为定义始终应在 HTTP 请求上定义的查询参数的便利方法

// Using `withOptions()`
Http::baseUrl('https://api.convertkit.com/v3/')
->withOptions([
'query' => [
'api_secret' => config('services.convertkit.api_secret'),
],
])
->acceptJson();
 
// Using the new `withQueryParameters()` method
Http::baseUrl('https://api.convertkit.com/v3/')
->withQueryParameters([
'api_secret' => config('services.convertkit.api_secret'),
])
->acceptJson();

发行说明

您可以在下面看到完整的新功能和更新列表,以及 10.13.0 和 10.14.0 之间的差异,在 GitHub 上。以下发行说明直接来自 变更日志

v10.14.0

Paul Redmond photo

Laravel News 的撰稿人。全栈 Web 开发人员和作者。

Cube

Laravel 新闻邮件

加入 40k+ 其他开发者,绝不错过新的技巧、教程等等。

Laravel Forge logo

Laravel Forge

轻松创建和管理服务器,并在几秒钟内部署您的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发人员必备的代码运行器。使用 AI、自动完成和对本地和生产环境的即时反馈进行 Tinker。

Tinkerwell
No Compromises logo

No Compromises

来自 No Compromises 播客的两位经验丰富的开发人员 Joel 和 Aaron 现在可以为您的 Laravel 项目雇用。⬧ 固定费用 $7500/月。⬧ 无需冗长的销售流程。⬧ 无需合同。⬧ 100% 退款保证。

No Compromises
Kirschbaum logo

Kirschbaum

提供创新和稳定性,以确保您的 Web 应用程序成功。

Kirschbaum
Shift logo

Shift

运行旧版本的 Laravel?即时、自动的 Laravel 升级和代码现代化,以保持您的应用程序更新。

Shift
Bacancy logo

Bacancy

使用经验丰富的 Laravel 开发人员为您的项目注入活力,这些开发人员拥有 4-6 年的经验,每月仅需 $2500。获得 160 小时的专业知识和 15 天的无风险试用。立即安排电话!

Bacancy
Lucky Media logo

Lucky Media

现在就获得幸运 - 拥有超过十年的经验,是 Laravel 开发的理想选择!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar: Laravel 电子商务

Laravel 的电子商务。一个开源软件包,将现代无头电子商务功能的功能带到 Laravel。

Lunar: Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 职位招聘网站

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS 启动套件

SaaSykit 是一个 Laravel SaaS 启动套件,它包含运行现代 SaaS 所需的所有功能。支付、漂亮的结账、管理面板、用户仪表板、身份验证、现成的组件、统计数据、博客、文档等等。

SaaSykit: Laravel SaaS 启动套件
Rector logo

Rector

您无缝升级 Laravel、降低成本和加速创新的合作伙伴,为成功的公司提供服务

Rector
MongoDB logo

MongoDB

使用 MongoDB 和 Laravel 的强大集成增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务性、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。了解 MongoDB 的灵活、现代数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的无依赖项输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

在您的 Laravel 应用程序中添加 Swagger UI

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel 提示构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速、模糊的网站搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 包为您的 Laravel 应用程序添加评论

阅读文章