那,这个BUG是也是在Discuz!论坛里有个修复的提到的,测试了下发现确实有这个BUG,也就顺便就写个教程好了。

编辑合成,通过之前的学习,应该可以自己定位了吧,访问core/admin/admin_compose.php。
搜索editsave定位到35行的判定,能提示正常,那就说明这个部分都执行完了,倒着找吧,看到尾部的数据库语句

DB::query("update ".DB::table('wxcompose')." set composeitem='$composeitem',itemarr='$itemarr',itemarr2='$itemarr2',itemnumarr='$itemnumarr',randnum='$randnum',costcwb='$costcwb' where id='$id'");

老毛病,$id之前压根儿没获取的好吧~看下判定最初,下一行就是获取物品id的,正确的变量是$item,把$id改成$item后保存文件重新编辑合成配置。还是没有修改,
再回到之前的文件,发现获取变量的方式不对,修正

$item=intval($_REQUEST['item']);

$item=intval($_G['gp_item']);

再次提交,还是不对,难道是获取有问题?检查了下模板,发现压根儿没传递item这个值啊……看来是这里的问题,修改模板文件admin_compose.htm,在第26行后添加

<input type='hidden' value="$item" name="item">

保存模板文件,刷新合成配置,重新编辑提交,这回提示合成信息不存在。定位到后台文件admin_compose.php的第38行,查询到了会不存在,这个判定有问题,把

if($composeinfo){showmsg('合成物品信息不存在!', 'plugin.php?id=wxpet:pet&index=admin&adminindex=compose');}

改成

if(!$composeinfo){showmsg('合成物品信息不存在!', 'plugin.php?id=wxpet:pet&index=admin&adminindex=compose');}

保存文件。重新编辑提交,终于功能正常了。
问题解决。

本节教程结束。

Related Posts: 无心宠物-BUG修复系列-20-后台合成物品无法编辑的解决办法 :