好的,例如,如果有人输入用户名,而我想在验证开始时(在我的rules
方法中)在OR之前将其设置为小写,我该怎么做?
我知道你可以用修剪做类似的事情,例如:
[['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);
}
您可以使用FilterValidator
.
['username', 'filter', 'filter' => 'strtolower']
FilterValidator实际上不是一个验证器,而是一个数据处理者。它 调用指定的筛选器回调来处理属性值 并将处理后的值保存回属性。过滤器必须是 具有以下签名的有效 PHP 回调:
function foo($value) {...return $newValue; }
许多 PHP 函数限定此签名(例如
trim()
)。