很久没升级新版了,昨日升级到2.12.1版本,发现后台,CMS->静态块 中设置的内容,在前端无法显示。
查看代码发现,/services/cms/staticblock/StaticBlockMongodb.php 中,函数 getByIdentify()
与老版本相比,增加了status状态判断,去掉状态判断就能显示出静态块了。
public function getByIdentify($identify)
{
return $this->_staticBlockModel->find()->asArray()->where([
'identify' => $identify,
'status' => $this->getEnableStatus() //这里新增了状态判断
])->one();
}
通过在mongo里执行查询语句对比,发现
use fecmall;
db.static_block.find({'status':'1'});//能查询出内容
db.static_block.find({'status':1});//不能查询出内容
也就是说,MongoDB中status存储类型是 string ??
追溯代码发现,/models/mongodb/cms/StaticBlock.php 中,
const STATUS_DELETED = 10;
//const STATUS_ACTIVE = 1;
const STATUS_ACTIVE = '1'; //这里修改为string 即可显示
const STATUS_DISACTIVE = 2;
最后通过自己重写StaticBlock 覆盖掉系统 StaticBlock 解决。
不知这里是否是Bug,其他朋友有遇到过吗?