admin后台表名不要写死

bug问题 · dionyang · 于 6年前 发布 · 2308 次阅读

路径: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那几张表也加一下表前缀支持{{% }}

共收到 10 条回复
Fecmall#16年前 0 个赞

好的,改一下这个

有一些没法发现的历史遗留问题,多谢!

dionyang#26年前 0 个赞

@Terry #1楼 还有后面delete也直接用的语句写的表名

Fecmall#46年前 0 个赞

@dionyang #2楼 给予代码文件和行

dionyang#56年前 0 个赞

@Terry #4楼 appadmin/local/local_modules/Fecadmin/block/role/Manageredit.php 175行

                    $sql = "delete from {$table} where menu_id in ($remove_role_menu_id_str ) and role_id = :role_id ";

这个已经是我改过的了

dionyang#66年前 0 个赞

@Terry #4楼 错了,是vendor/fancyecommerce/fec_admin/block/role/Manageredit.php

dionyang#86年前 0 个赞

@Terry #7楼 我用composer装的。没用git。。

Fecmall#96年前 0 个赞

@dionyang #8楼 composer 是空的,是没有文件的,只是报错了文件代码库地址和相应的版本号

因此,composer安装,加载的就是github的版本库里面的文件

dionyang#106年前 0 个赞

@Terry #9楼 哦对。。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics