yii2模型中的自定义验证

时间:2017-03-31 13:02:11

标签: yii2

我正在尝试向表单添加自定义规则。我在模型中添加了一个自定义函数,但它对我不起作用。

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');
    }

}}

2 个答案:

答案 0 :(得分:0)

在PHP中,没有像你在这里使用过的结构(a => b => c,也许它是一个错字)并且你不必通过任何参数,因为你没有&#39 ; t在验证器方法中使用它们。简单

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

就够了。

答案 1 :(得分:0)

您的代码中存在少量拼写错误。尝试在动态属性中使用$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');
  }
 }
}