自定义ValidateID验证规则报错:Function name must be a string,求原因
解决自定义验证规则调用时的"Function name must be a string"错误
嘿,这个错误的原因很清晰——你把数组变量$rules当成函数来调用啦!
看你代码里的这一行:
$rules([ "ID" =>['required', 'string', new ValidateID()] ]);
你一开始已经把$rules定义成了一个空数组:$rules = [];,结果后面误用了函数调用的语法$rules(...)。PHP会把这种写法识别为“调用名为$rules的函数”,但实际上$rules是一个数组变量,不是字符串类型的函数名,所以就抛出了"Function name must be a string"的错误。
正确的做法是给数组$rules添加键值对,而不是用函数调用的写法。修正后的代码如下:
public function store(Request $request, $id, $slug = null, Validator $validator){ $rules = []; $messages = []; $rules["name"] = 'required|max:255|string'; // 改为数组赋值语法,添加ID字段的验证规则 $rules["ID"] = ['required', 'string', new ValidateID()]; }
这样调整写法后,错误就会消失啦,本质是你混淆了数组赋值和函数调用的语法~
内容的提问来源于stack exchange,提问作者user9659025
相关产品推荐
相关产品推荐

