# 内置事件

# 成员登录成功事件

事件监听配置:项目根目录/app/event.php

return [
    ...,
    'listen'    => [
        ...,
        'AppInit'  => [
            "yunj\core\Init"
        ],
        // 成员登录成功事件
        'AdminMemberLogin'=>[
            "app\\event\\listen\\AdminMemberLogin"
        ],
    ],
];

事件监听处理类:

namespace app\event\listen;

use yunj\app\admin\model\AdminMember;

class AdminMemberLogin {

    /**
     * @param AdminMember $member 当前登录成员实例
     */
    public function handle(AdminMember $member) {
        $memberId = $member->id;
        // ...其他业务操作
    }

}

# 成员退出登录事件

事件监听配置:项目根目录/app/event.php

return [
    ...,
    'listen'    => [
        ...,
        'AppInit'  => [
            "yunj\core\Init"
        ],
        // 成员退出登录事件
        'AdminMemberLogout'=>[
            "app\\event\\listen\\AdminMemberLogout"
        ],
    ],
];

事件监听处理类:

namespace app\event\listen;

use yunj\app\admin\model\AdminMember;

class AdminMemberLogout {

    /**
     * @param AdminMember $member 当前登录成员实例
     */
    public function handle(AdminMember $member) {
        $memberId = $member->id;
        // ...其他业务操作
    }

}

# 系统设置保存前事件

事件监听配置:项目根目录/app/event.php

return [
    ...,
    'listen'    => [
        ...,
        'AppInit'  => [
            "yunj\core\Init"
        ],
        // 系统设置保存前事件
        'AdminSettingSaveBefore'=>[
            "app\\event\\listen\\AdminSettingSaveBefore"
        ],
    ],
];

事件监听处理类:

namespace app\event\listen;

class AdminSettingSaveBefore {

    /**
     * @param array $args
     * [
     *      'group'=>'xxx',         // 设置分组
     *      'groupConfig'=>[...]',  // 分组配置
     *      'values'=>[...],        // 保存字段值
     * ]
     */
    public function handle(array $args) {
        ['group' => $group, 'groupConfig' => $groupConfig, 'values' => $fieldValues] = $args;
        if (!in_array($group, ['test'])) {
            $msg = ($groupConfig['desc'] ?? '') . ' 数据暂未开放演示修改';
            throw_error_json($msg);
        }
    }

}

# 权限编辑保存前事件

事件监听配置:项目根目录/app/event.php

return [
    ...,
    'listen'    => [
        ...,
        'AppInit'  => [
            "yunj\core\Init"
        ],
        // 权限编辑保存前事件
        'AdminAuthSaveBefore'=>[
            "app\\event\\listen\\AdminAuthSaveBefore"
        ],
    ],
];

事件监听处理类:

namespace app\event\listen;

class AdminAuthSaveBefore {

    /**
     * @param array $args
     * [
     *      'isEdit'=>'xxx',         // 是否编辑保存
     *      'loadValues'=>[...]',    // 加载的数据
     *      'data'=>[...],           // 修改后提交的数据
     * ]
     */
    public function handle(array $args) {
        ['isEdit' => $isEdit, 'loadValues' => $loadValues, 'data' => $data] = $args;
    }

}

# 路由请求功能保存前事件

事件监听配置:项目根目录/app/event.php

return [
    ...,
    'listen'    => [
        ...,
        'AppInit'  => [
            "yunj\core\Init"
        ],
        // 路由请求功能保存前事件
        'AdminRouteSaveBefore'=>[
            "app\\event\\listen\\AdminRouteSaveBefore"
        ],
    ],
];

事件监听处理类:

namespace app\event\listen;

class AdminRouteSaveBefore {

    /**
     * @param array $args
     * [
     *      'isEdit'=>'xxx',         // 是否编辑保存
     *      'loadValues'=>[...]',    // 加载的数据
     *      'data'=>[...],           // 修改后提交的数据
     * ]
     */
    public function handle(array $args) {
        ['isEdit' => $isEdit, 'loadValues' => $loadValues, 'data' => $data] = $args;
    }

}

# 表单构建器提交操作前事件

事件监听配置:项目根目录/app/event.php

return [
    ...,
    'listen'    => [
        ...,
        'AppInit'  => [
            "yunj\core\Init"
        ],
        // 表单构建器提交操作前事件
        'YunjFormSubmitBefore'=>[
            "app\\event\\listen\\YunjFormSubmitBefore"
        ],
    ],
];

事件监听处理类:

namespace app\event\listen;

use yunj\core\builder\YunjForm;

class YunjFormSubmitBefore {

    /**
     * @param array $args
     * [
     *      'builder'=>xxx,     // 构建器实例
     *      'values'=>[...],    // 提交字段值
     * ]
     */
    public function handle(array $args) {
        /** @var YunjForm $builder */
        ['builder' => $builder, 'values' => $values] = $args;
        $builderId = $builder->getId();
        if ($builderId !== 'demo' && $builderId !== 'SettingForm') {
            throw_error_json('当前操作暂未开放演示');
        }
    }

}

# 表格构建器异步事件触发前事件

事件监听配置:项目根目录/app/event.php

return [
    ...,
    'listen'    => [
        ...,
        'AppInit'  => [
            "yunj\core\Init"
        ],
        // 表格构建器异步事件触发前事件
        'YunjTableEventBefore'=>[
            "app\\event\\listen\\YunjTableEventBefore"
        ],
    ],
];

事件监听处理类:

namespace app\event\listen;

class YunjTableEventBefore {

    /**
     * @param array $args
     * [
     *      'builder'=>xxx,     // 构建器实例
     *      'event'=>'xxx',     // 事件
     *      'ids'=>[...],       // 主键集合。若设置有对应的表格构建器”pk“。则主键集合键名为设置的”pk“+"s",默认为ids。
     * ]
     */
    public function handle(array $args) {
        ['builder' => $builder, 'event' => $event] = $args;
        throw_error_json('当前操作暂未开放演示');
    }

}