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
}
}
});
}
它将根据允许用户编辑或不允许的条件来完成工作(将消息重定向到其他操作)。
如有疑问请评论。
我已经创建了一个插件来扩展用户插件,现在我想扩展其控制器的更新功能。
实际上我想做的是在管理员时检查一些数据
单击“更新”按钮,然后根据数据,让管理员照常编辑用户表单或将他重定向到用户列表。
我正在尝试通过我的插件中的一条路线来做到这一点:
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
}
}
});
}
它将根据允许用户编辑或不允许的条件来完成工作(将消息重定向到其他操作)。
如有疑问请评论。