我有基本的自定义validation rule
。在
public function passes($attribute, $value)
{
foreach ($parameters as $key)
{
if ( ! empty(Input::get($key)) )
{
return false;
}
}
return true;
}
我已经定义了规则。我虽然需要从parameters
中检索rule
,但是passes
方法并未将其作为argument
提供。
如果我使用提供Validator:extends...
的样式4 arguments: $attribute, $value, $parameters, $validator
。然后,我可以轻松地使用parameters
,很遗憾,我不得不使用这种方式。
编辑:
清除问题。我想检索parameters of the rule
,就像用其他编码方式一样:
'not_empty:user_id'
。冒号后面的值数组。
答案 0 :(得分:1)
我相信唯一的方法是使用规则对象时从请求中检索它。
例如:
public function passes($attribute, $value)
{
foreach ($parameters as $key) {
// Or using \Request::input($key) if you want to use the facade
if (!empty(request()->input($key)) {
return false;
}
}
return true;
}
答案 1 :(得分:1)
编辑:---
自定义规则对象只是一个对象。如果您想传递更多的参数,可以在其构造函数中使用:
$request->validate([
'name' => ['required', new MyCustomRule('param', true, $foo)],
]);
然后保存这些内容并在passes
函数中使用它们。
public function __construct($myCustomParam){
$this->myCustomParam = $myCustomParam;
}
然后在您的passs函数中使用:
$this->myCustomParam