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

Laravel中required_if验证规则失效问题求助

解决Laravel中当URL包含"{"时Model Name必填的验证问题

你之前尝试的required_if写法均不生效,原因是required_if的原生语法仅支持判断指定字段是否等于某个固定值,无法直接在参数中嵌套正则或其他验证规则,Laravel无法解析这类错误格式的规则。

以下是两种可行的实现方案:

方法一:闭包形式的required_if规则

直接在required_if的第二个参数传入闭包,判断URL字段是否包含{字符:

public function rules()
{   
    $rules = [ 
        'title' => 'required', 
        'url' => 'required',
        'model_name' => 'required_if:url,function ($value) {
            return str_contains($value, "{");
        }',
    ];  

    return $rules;
}

方法二:使用Rule::requiredIf()(推荐)

借助Laravel的Rule类,通过闭包直接获取请求中的URL值进行判断,可读性更强:

use Illuminate\Validation\Rule;

public function rules()
{   
    $rules = [ 
        'title' => 'required', 
        'url' => 'required',
        'model_name' => Rule::requiredIf(function () {
            return str_contains($this->url, "{");
        }),
    ];  

    return $rules;
}

两种方案均可实现需求:当url字段包含{字符时,model_name会被标记为必填项;反之则无需填写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:55:21