在404覆盖时不加载Codeigniter数据映射器

时间:2012-06-14 09:50:06

标签: codeigniter codeigniter-datamapper

当Codeigniter正在处理由不存在的操作(仅操作,而不是控制器)引起的404覆盖时,datamapper无法加载,从而导致无法执行任何数据库功能。

我的用例是:我想要注册有关在网站上遇到404的人/时间/地点的数据。

版本信息:codeigniter 2.1.0; datamapper 1.8.2

1 个答案:

答案 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';