2012-11-19 125 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的主網站上有一個完整的文檔系統,但是你確實提供了一些非常需要的基本信息 –