2012-11-19 92 views
4

打开车是基于笨,我理解,但CI中加载和使用的模型,你做这样的事加载和使用模型

$this->load->model('Model_name'); 

$this->Model_name->function(); 

在Opencart的,你做这样的事情

$this->load->model('catalog/product'); 
$this->model_catalog_product->getTotalProducts() 

这是如何工作的以及“model_catalog_product”从哪里来的?

看起来他们除了论坛之外还有0个开发者文档。

回答

6

Opencart的装载机类seems to be inspired由笨,但它不是基于它。您可以查看OpenCart的来源,请参阅文件system/engine/loader.php(第39行)。

public function model($model) { 
    $file = DIR_APPLICATION . 'model/' . $model . '.php'; 
    $class = 'Model' . preg_replace('/[^a-zA-Z0-9]/', '', $model);      

    if (file_exists($file)) { 
     include_once($file); 

     // Right here. Replaces slash by underscore. 
     $this->registry->set('model_' . str_replace('/', '_', $model), new $class($this->registry)); 
    } else { 
     trigger_error('Error: Could not load model ' . $model . '!'); 
     exit();     
    } 
} 

你可以清楚地看到,它取代斜杠用下划线和模型的名称前追加'model_'。这就是为什么你最终与model_catalog_product

+0

很好的解释!所以它不是基于CodeIgniter的,只是遵循一些惯例。如果文档不存在,我有什么最好的方式来掌握OpenCart? – CodeCrack

+0

好问题。如果他们有最近的开发者指南或者教程,你可以试着问[社区](http://forum.opencart.com/viewforum.php?f=109)。代码本身总是存在的,不会撒谎,而且始终是最新的。 (可能是一个痛苦......) –

+0

似乎我不能在“支持”部分创建一个新线程。前几天我在关于文档的“编码”部分做了一个线索,并有0个回复。 – CodeCrack

2

model_catalog_product来自模型的文件夹内的路径文件夹结构和文件名,所以model_catalog_productmodel/catalog/product.php文件,扩展名为除去斜线改变为下划线。另请注意,模型类名称也指代一个类似的结构,即ModelCatalogProduct。至于文档,有一些文档的开发人员,但只是简单检查,它似乎已被删除,无论出于何种原因。不幸的是,我从很多尝试和错误中学到了很多,因为大多数开发人员都在使用它

+0

找到了! http://forum.opencart.com/viewtopic.php?t=21748 – ckonig

+0

这不是我所指的文档 - 实际上在opencart.com的主网站上有一个完整的文档系统,但是你确实提供了一些非常需要的基本信息 –