2013-06-18 18 views
0

的CakePHP: 2.3.5獲取常數模型

class Table extends AppModel { 

    const STATUS_FREE = 0; 
    const STATUS_BUSY = 1; 
    const STATUS_INCHECK = 2; 
    const STATUS_LINK = 3; 
    const STATUS_CLEAN = 4; 
    const STATUS_CASHIER = 9; 

我在TablesController,我需要訪問該常數。 我創辦的唯一的辦法做到這一點,就是:

$this->loadModel('Table'); 
$free = Table::STATUS_FREE; 

我嘗試過:

self::STATUS_FREE 

爲什麼需要使用$this->loadModel,如果我在TablesController?

+0

是'TablesController'!='Table'? –

+0

如果我正確理解你的話:TablesController!= Table,因爲Table是一個模型(app/Model/Table.php) –

回答

1

你不需要loadModel。你只需要包括類。 你也可以通過App :: uses()來實現 - 這種類型可以作爲懶加載的require()。

只需包含您需要來自主類上方的常量的類。總是。

App::uses('Table', 'Model'); 
App::uses('OtherModelWithContantsYouNeed', 'Model'); 

class TablesController extends AppController {} 

現在你可以在你的控制器代碼,以及其所有的觀點在任何地方使用您的常量!

這也是我在我的枚舉(http://www.dereuromark.de/2010/06/24/static-enums-or-semihardcoded-attributes/)中爲我的類常量做的。 還有更詳細的說明發生了什麼。

+0

我認爲這已經是默認了,以便Table是ModelController的Model。無論如何,謝謝馬克! –

+0

它通常是。但是這在運行時會被認定爲太晚。靜態訪問發生在自動包含之前。這就是爲什麼這個手冊定義需要 - 但它也沒有傷害:) – mark