路径:vendor/fancyecommerce/fec_admin/block/role/Manageredit.php
140行起:
$menu = CRequest::param("menu");
$select_menus = isset($menu['select_menus']) ? $menu['select_menus'] : '';
# 如果存在role_id 和选择的菜单
if($roleId && $select_menus){
# 得到当前选择的menu_id和相应的所有上级menu_id
$select_menu_ids = $this->getAllParentMenuIds($select_menus);
$select_menu_ids = array_unique($select_menu_ids);
# AdminRole中role_id 对应的所有 menu_id
$role_menu_ids = $this->getDbRoleMenuIds($roleId);
# 需要插入的role_id - menu_id 数组差集
$add_role_menu_ids = array_diff($select_menu_ids,$role_menu_ids);
# 需要删除的role_id - menu_id 数组差集
$remove_role_menu_ids = array_diff($role_menu_ids,$select_menu_ids);
# 事务 插入 和 删除 role_menu 表中,当前role_id 对应的menu_id
$table = 'admin_role_menu';
$columnsArr = ['menu_id','role_id','created_at','updated_at'];
$valueArr = [];
$now_date = date("Y-m-d H:i:s");
if(!empty($add_role_menu_ids)){
foreach($add_role_menu_ids as $menu_id){
$valueArr[] = [$menu_id,$roleId,$now_date,$now_date];
这里admin_role_menu不要写死。改成AdminRoleMenu::tablename()
另外Admin那几张表也加一下表前缀支持{{% }}