好的,例如,如果有人输入用户名,并且我想在验证开始之前将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);
}
答案 0 :(得分:1)
您可以使用FilterValidator
。
['username', 'filter', 'filter' => 'strtolower']
FilterValidator实际上不是验证器,而是数据处理器。它 调用指定的过滤器回调来处理属性值 并将处理后的值保存回属性。过滤器必须是 带有以下签名的有效PHP回调:
function foo($value) {...return $newValue; }
许多PHP函数都符合此签名(例如
trim()
)。