Php OctoberCMS如何覆盖用户插件onRegister()函数?

Php OctoberCMS如何覆盖用户插件onRegister()函数?,php,laravel,laravel-5,octobercms,Php,Laravel,Laravel 5,Octobercms,我用的是基于拉威尔的 我试图重写onRegister()函数 我想将用户名限制为仅包含字母数字的alpha_-dash,并限制为50个字符 中的原始函数 我的覆盖 用户事件文档 错误 "Call to undefined method [loginAttribute]" 如果我删除If语句和loginatAttribute,只使用$rules['username'],我仍然能够用非字母数字字符注册名称 我已经能够使用它扩展新代码,但不能覆盖现有代码。我认为您不理解这里的页面循环 rainla

我用的是基于拉威尔的

我试图重写
onRegister()
函数

我想将用户名限制为仅包含字母数字的
alpha_-dash
,并限制为50个字符

中的原始函数

我的覆盖

用户事件文档

错误

"Call to undefined method [loginAttribute]"
如果我删除If语句和loginatAttribute,只使用$rules['username'],我仍然能够用非字母数字字符注册名称


我已经能够使用它扩展新代码,但不能覆盖现有代码。

我认为您不理解这里的页面循环

rainlab.user.register
在用户已注册后调用。也就是说,他们已经通过了验证,并且已经存在,用户名无效

您可以改为绑定到用户模型的
模型。在保存
事件之前,请自行验证用户名:

public function boot() {

    \RainLab\User\Models\User::extend(function($model) {

        $model->bindEvent('model.beforeSave', function() use ($model) {
            $validator = \Validator::make($model->attributes, [
                'username' => 'required|alpha_dash|between:2,50',
            ]);

            if ($validator->fails()) {
                throw new \ValidationException([
                    'username' => 'Username must contain alphanumeric values only, and be between 2 and 50 characters in length',
                ]);
            }
        });

    });

}

我有个新问题也许你能帮我
"Call to undefined method [loginAttribute]"
public function boot() {

    \RainLab\User\Models\User::extend(function($model) {

        $model->bindEvent('model.beforeSave', function() use ($model) {
            $validator = \Validator::make($model->attributes, [
                'username' => 'required|alpha_dash|between:2,50',
            ]);

            if ($validator->fails()) {
                throw new \ValidationException([
                    'username' => 'Username must contain alphanumeric values only, and be between 2 and 50 characters in length',
                ]);
            }
        });

    });

}