October CMS - 扩展插件的功能?

October CMS - Extending the function of a plugin?

我已经创建了一个插件来扩展用户插件,现在我想扩展其控制器的更新功能。
实际上我想做的是在管理员时检查一些数据 单击“更新”按钮,然后根据数据,让管理员照常编辑用户表单或将他重定向到用户列表。
我正在尝试通过我的插件中的一条路线来做到这一点:

Route::get('backend/rainlab/user/users/update/{id}', '\RainLab\User\Controllers\Users@check_update');

在我的 Plugin.php 文件中

 public function boot()
 {

     \RainLab\User\Controllers\Users::extend( function($controller) {
         $controller->addDynamicMethod('check_update', function($recordId = null, $context = null) use ($controller) {

              return $controller->asExtension('FormController')->update($recordId, $context);
         });

     });
  }

但是我得到一个空白页。未显示用户表单。
有人可以帮助我吗?

这不会起作用,因为它将 break life-cycle of back-end 和直接 call method of controller

作为其他解决方案,我们可以使用事件:) - backend.page.beforeDisplay

In your plugin's plugin.php file's boot method

public function boot() {
    \Event::listen('backend.page.beforeDisplay', function($controller, $action, $params) {
        if($controller instanceof \RainLab\User\Controllers\Users) {
            // for update action
            if($action === 'update') {
                // check data ($params) and make decision based on that
                // allow user to edit or NOT
                if(true) {
                    // just redirect him to somewhere else
                    \Flash::error('Please No.');
                    return \Redirect::to('/backend/rainlab/user/users');
                }

                // if all good don't return anything and it will work as normal
            }
       }
    });
}

它将根据允许用户编辑或不允许的条件来完成工作(将消息重定向到其他操作)。

如有疑问请评论。