我试图扩展RainLab用户插件,并需要在后端表单中过滤字段。
如果我直接编辑用户模型,我可以使用它,但我尝试使用" addDynamicMethod"来自我自己的插件注册文件。没有运气。 用户模型文件上的代码:
public function filterFields($fields, $context = null)
{
if (property_exists($fields, 'usertype')) {
$userType = $fields->usertype->value;
if($userType == $this->AGENT || $userType == null) {
$fields->agent->hidden = true;
}
}
}
答案 0 :(得分:1)
下面是我在我的一个自定义插件中执行的示例代码,用于扩展我的Backend用户插件。您可以在自定义插件的boot()
函数中添加以下逻辑。
use Backend\Models\User as BackendUserModel;
public function boot()
{
// Add Team field in user administartor form
BackendUsersController::extendFormFields(function($form, $model, $context){
if (!$model instanceof BackendUserModel)
return;
$form->addTabFields([
'team' => [
'label' => 'Team',
'comment' => 'Associate this user with a team.',
'type' => 'recordfinder',
'list' => '$/technobrave/team/models/team/columns.yaml',
'prompt' => 'Click the %s to find a team',
'select' => 'id',
'nameFrom'=> 'name',
'tab' => 'Account',
'disabled' => true
]
]);
});
}
在上面的功能中,我已经禁用了要为用户更新的字段。
您可以将上面的代码作为示例,并根据您的要求使用它。
希望这会有所帮助。