Laravel 11.3 发布:Laravel Prompt 添加多行文本输入
Laravel 团队发布了 v11.3,更新内容包括:Laravel Prompts 中使用多行文本、Session:hasAny() 方法、Context::pull() 方法等等。
多行文本提示(Prompt)
Joe Tannenbaum 为 Laravel prompts 贡献了一个 textarea 函数,使之接受多行文本:
Laravel Prompts 中的多行文本输入
textarea()
函数包含一个可选的验证参数和一个必需的参数,以确保文本区域已填充内容:
use function Laravel\Prompts\textarea;
$story = textarea(
label: 'Tell me a story.',
placeholder: 'This is a story about...',
required: true,
hint: 'This will be displayed on your profile.'
);
// Validation
$story = textarea(
label: 'Tell me a story.',
validate: fn (string $value) => match (true) {
strlen($value) < 250 => 'The story must be at least 250 characters.',
strlen($value) > 10000 => 'The story must not exceed 10,000 characters.',
default => null
}
);
有关用法详细信息,请参阅 textarea()
函数文档,有关实现,请参阅 laravel/prompts 存储库中的 Pull Request #88。
新增 Session hasAny() 方法
Mahmoud Mohamed Ramadan 为 Session 贡献了 hasAny()
方法,这对检测 session 中是否有某个值是很好的改进:
// Before
if (session()->has('first_name') || session()->has('last_name')) {
// do something...
}
// Using the new hasAny() method
if (session()->hasAny(['first_name', 'last_name'])) {
// do something...
}
Context Pull 方法
@renegeuze 为 Context 服务贡献了 pull() 和 pullHidden() 方法,用以拉取上下文数据,并立马从 Context 中移除这些数据。
$foo = Context::pull('foo');
$bar = Context::pullHidden('foo');
此功能的一个示例用例可能是捕获数据库日志记录的上下文并提取它,因为后续不再需要额外的上下文。
发布说明
你可以在 GitHub 上看到下面的新功能和更新的完整列表,以及 11.2.0 和 11.3.0 之间的差异。以下发行说明直接来自更改日志:
v11.3.0
- [10.x] Prevent Redis connection error report flood on queue worker by @kasus in https://github.com/laravel/framework/pull/50812
- [11.x] Optimize SetCacheHeaders to ensure error responses aren't cached by @MinaWilliam in https://github.com/laravel/framework/pull/50903
- [11.x] Add session hasAny method by @mahmoudmohamedramadan in https://github.com/laravel/framework/pull/50897
- [11.x] Add option to report throttled exception in ThrottlesExceptions middleware by @JaZo in https://github.com/laravel/framework/pull/50896
- [11.x] Add DeleteWhenMissingModels attribute by @Neol3108 in https://github.com/laravel/framework/pull/50890
- [11.x] Allow customizing TrimStrings::$except by @grohiro in https://github.com/laravel/framework/pull/50901
- [11.x] Add pull methods to Context by @renegeuze in https://github.com/laravel/framework/pull/50904
- [11.x] Remove redundant code from MariaDbGrammar by @hafezdivandari in https://github.com/laravel/framework/pull/50907
- [11.x] Explicit nullable parameter declarations to fix PHP 8.4 deprecation by @Jubeki in https://github.com/laravel/framework/pull/50922
- [11.x] Add setters to cache stores by @stancl in https://github.com/laravel/framework/pull/50912
- [10.x] Laravel 10x optional withSize for hasTable by @apspan in https://github.com/laravel/framework/pull/50888
- [11.x] Fix prompting for missing array arguments on artisan command by @macocci7 in https://github.com/laravel/framework/pull/50850
- [11.x] Add strict-mode safe hasAttribute method to Eloquent by @mateusjatenee in https://github.com/laravel/framework/pull/50909
- [11.x] add function to get faked events by @browner12 in https://github.com/laravel/framework/pull/50905
- [11.x] retry func - catch "Throwable" instead of Exception by @sethsandaru in https://github.com/laravel/framework/pull/50944
- chore: remove repetitive words by @findseat in https://github.com/laravel/framework/pull/50943
- [10.x] Add serializeAndRestore() to NotificationFake by @dbpolito in https://github.com/laravel/framework/pull/50935
- [11.x] Prevent crash when handling ConnectionException in HttpClient retry logic by @shinsenter in https://github.com/laravel/framework/pull/50955
- [11.x] Remove unknown parameters by @naopusyu in https://github.com/laravel/framework/pull/50965
- [11.x] Fixed typo in PHPDoc [@param](https://github.com/param) by @naopusyu in https://github.com/laravel/framework/pull/50967
- [11.x] Fix dockblock by @michaelnabil230 in https://github.com/laravel/framework/pull/50979
- [11.x] Allow time to be faked in database lock by @JurianArie in https://github.com/laravel/framework/pull/50981
- [11.x] Introduce method Http::createPendingRequest() by @Jacobs63 in https://github.com/laravel/framework/pull/50980
- [11.x] Add @throws to some doc blocks by @saMahmoudzadeh in https://github.com/laravel/framework/pull/50969
- [11.x] Fix PHP_MAXPATHLEN check for existing check of files for views by @joshuaruesweg in https://github.com/laravel/framework/pull/50962
- [11.x] Allow to remove scopes from BelongsToMany relation by @plumthedev in https://github.com/laravel/framework/pull/50953
- [11.x] Throw exception if named rate limiter and model property do not exist by @mateusjatenee in https://github.com/laravel/framework/pull/50908