OctoberCMS - 扩展插件filterFields方法

时间:2017-07-08 19:48:11

标签: octobercms

我试图扩展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;
        }
    }
}

1 个答案:

答案 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                    
            ]
        ]);
    });
}

在上面的功能中,我已经禁用了要为用户更新的字段。

您可以将上面的代码作为示例,并根据您的要求使用它。

希望这会有所帮助。