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

Laravel 9.1表单验证:两输入拼接后校验表单一列

解决方案

在Laravel表单请求中,你可以通过预处理请求数据+添加存在性验证规则来实现需求,具体步骤如下:

  1. 重写prepareForValidation方法预处理数据
    将resource_name和permission_type拼接为name字段并合并到请求中,这个方法会在验证规则执行前自动触发:
protected function prepareForValidation()
{
    $this->merge([
        'name' => $this->input('resource_name') . '.' . $this->input('permission_type'),
    ]);
}
  1. 完善验证规则
    在rules方法中为name字段添加exists规则,检查拼接后的值是否存在于permission_types表的name列中:
public function rules()
{
    return [
        'type' => ['required'],
        'resource_name' => ['required', 'alpha', 'min:3', 'max:50'],
        'permission_type' => ['required'],
        'name' => ['exists:permission_types,name'],
    ];
}
  1. (可选)自定义错误提示
    如果需要更友好的错误信息,可以重写messages方法:
public function messages()
{
    return [
        'name.exists' => '该资源与权限类型的组合不存在于系统权限列表中',
    ];
}

逻辑说明

  • 预处理阶段先完成字段拼接,确保验证时name字段已存在
  • 验证流程会先校验resource_name、permission_type等字段的规则,只有这些字段验证通过后,才会触发name的存在性检查,完全符合你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:36:20