我试图过滤一段输入数据但是想在没有匿名函数的情况下这样做。下面的第一个示例有效,但第二个示例返回列出的错误。我不希望这几行验证码直接放在我的规则中,所以我想要一种方法来解决它(就像我试图实现的第二个例子一样。
示例1(有效,但不是我想做的)
public function rules()
{
return [
['roles', 'filter', 'filter' => function ($value) {
// Do some stuff to remove invalid roles
return $value;
}];
}
示例2(不起作用,但我想做的事)
public function rules()
{
return [
['roles', 'filter', 'filter' => 'checkRoles'],
];
}
public function checkRoles($value)
{
// Do some stuff to remove invalid roles
return $value;
}
上面的示例2返回错误
call_user_func() expects parameter 1 to be a valid callback,
function 'validateRoles' not found or invalid function name
为什么上面的第二个例子不起作用?或者更确切地说,更重要的是,我需要改变什么来使第二个例子起作用?
答案 0 :(得分:0)
您可能必须使用这样的结构:
'filter' => array( $this, 'checkRoles' )
答案 1 :(得分:0)
您应该使用有效的回调,例如:
public function rules()
{
return [
['roles', 'filter', 'filter' => [$this, 'checkRoles']],
];
}