Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
yii2模型中的自定义验证_Yii2 - Fatal编程技术网

yii2模型中的自定义验证

yii2模型中的自定义验证,yii2,Yii2,我正在尝试将自定义规则添加到表单中。我在模型中添加了一个自定义函数,但它不适合我 class BackendUser extends ActiveRecord implements IdentityInterface { public function rules() { return [ ['username','validateUsername','params'=>'username'=>'username']], ]; } publi

我正在尝试将自定义规则添加到表单中。我在模型中添加了一个自定义函数,但它不适合我

class BackendUser extends ActiveRecord implements IdentityInterface
{
public function rules()
{

    return [

        ['username','validateUsername','params'=>'username'=>'username']],


    ];
}

public function validateUsername($attribute, $params)
{
    if (preg_match('/[^a-z])/i', $this->$attribute)) {
        $this->addError($attribute, 'Username should only contain
    alphabets');
    }

}}

在PHP中,没有像您在这里使用的构造(a=>b=>c,可能是打字错误),而且您不必传递任何参数,因为您不在validator方法中使用它们。简单的

public function rules()
{
    return [
        ['username','validateUsername'],
    ];
}

足够了。

您的代码中几乎没有输入错误。尝试在动态属性中使用
$this->{$attribute}
,并且调用内联验证时
params
键应为数组

class BackendUser extends ActiveRecord implements IdentityInterface
{
public function rules()
{

return [
    ['username','validateUsername','params'=>['username'=>'username']],
 ];
}

public function validateUsername($attribute, $params)
{
 if (preg_match('/[^a-z])/i', $this->{$attribute})) {
    $this->addError($attribute, 'Username should only contain alphabets');
  }
 }
}

你好,谢谢你的回复。我试过你的密码。没用了,什么?怎么会?您没有使用它们。我使用了内联函数。现在它工作了。['username',function($attribute,$params){},'skipOnError'=>false],