在Yii 2中验证之前/期间在表单数据上运行函数

时间:2014-11-27 06:00:35

标签: php yii yii2

好的,例如,如果有人输入用户名,并且我想在验证开始之前将OR设为小写(在我的rules方法中),我该怎么做?

我知道你可以做一些与修剪类似的东西,例如:

[['company_name', 'first_name', 'last_name', 'email', 'username', 'password', 'password2'], 'trim']

但我认为这不支持任何功能?

所以,我想在用户名上运行strtolower函数,这样做的方法是什么?我需要使用beforeValidate方法还是可以做这样的事情?

['username', 'makeLower']

public function makeLower($attribute, $params) {                
    $this->$attribute = strtolower($this->$attribute);
}

1 个答案:

答案 0 :(得分:1)

您可以使用FilterValidator

['username', 'filter', 'filter' => 'strtolower']
  

FilterValidator实际上不是验证器,而是数据处理器。它   调用指定的过滤器回调来处理属性值   并将处理后的值保存回属性。过滤器必须是   带有以下签名的有效PHP回调:

function foo($value) {...return $newValue; }
     

许多PHP函数都符合此签名(例如trim())。