当Codeigniter正在处理由不存在的操作(仅操作,而不是控制器)引起的404覆盖时,datamapper无法加载,从而导致无法执行任何数据库功能。
我的用例是:我想要注册有关在网站上遇到404的人/时间/地点的数据。
版本信息:codeigniter 2.1.0; datamapper 1.8.2
答案 0 :(得分:0)
我认为问题在于datamapper“扩展”db类的方式。定义要使用的db类的名称的文件仅包含一次,因此在重新构造codeigniter对象时,名称将保持不被覆盖。要解决此问题,您需要自费修改datamapper文件。
第143行后面的文件“application / third_party / datamapper / system / DB.php”:
// load Datamappers DB interceptor class
require_once(APPPATH.'third_party/datamapper/system/DB_driver.php');
这些行:
// HACK to make datamapper load correctly after codeigniter has been reconstructed in
// cases of invalid actions (404 overrides)
$driver = 'DM_DB_Driver';