编程

Laravel 11.3 发布:Laravel Prompt 添加多行文本输入

206 2024-04-11 00:07:00

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