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],