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
相关产品推荐
相关产品推荐

