You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10嵌套验证:textarea有内容时需满足长度要求

Laravel 10 实现 meta[] 字段的条件验证规则

问题背景

项目中有1-20个名称为meta[]的textarea字段,HTML结构示例如下:

<div class="flex-1">
    <label for="meta" class="mb-0 sm:w-1/4 sm:ltr:mr-2 rtl:ml-2">Addition Description</label>
    <textarea id="meta" name="meta[]" rows="5" class="form-textarea" data-markdown="true" placeholder=""></textarea>
</div>

需要实现验证规则:若某个textarea填写了内容,则内容长度必须不少于30字符。当前验证规则的meta.*部分待完善:

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules(): array
{
    return [
        'name' => [
            'required',
            Rule::unique('skills')->ignore($this->skill),
        ],
        'ability' => [
            'required',
            Rule::in(Abilities::names())
        ],
        'type' => [
            'required',
            Rule::in(Types::names())
        ],
        'description' => [
            'required',
            'min:30'
        ],
        'meta.*' => [
            Rule::requiredIf(fn () =>
                dd($this)
            )
        ]
    ];
}

解决方案

直接修改meta.*的验证规则,使用nullable、trim和min:30组合即可满足需求:

修改后的完整验证规则

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules(): array
{
    return [
        'name' => [
            'required',
            Rule::unique('skills')->ignore($this->skill),
        ],
        'ability' => [
            'required',
            Rule::in(Abilities::names())
        ],
        'type' => [
            'required',
            Rule::in(Types::names())
        ],
        'description' => [
            'required',
            'min:30'
        ],
        'meta.*' => [
            'nullable',
            'trim',
            'min:30'
        ]
    ];
}

规则说明

  • nullable:允许字段值为空(包括空字符串),不会触发后续验证规则
  • trim:自动去除字段值首尾的空格,避免纯空格内容被误判为有效输入
  • min:30:仅当字段值经过trim后非空时,验证其长度至少为30字符

这样就精准实现了需求:空的textarea不会触发验证,填写了有效内容的textarea必须满足长度要求。

内容的提问来源于stack exchange,提问作者Sasha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:35:14