2013-03-29 29 views
0

我知道如何在Yii的輔助類中包含常用函數。但是常見的數據如下降值如何?如何在Yii中訪問一些常用數據而不重複包含在許多文件中? 在數據庫例如用戶類型是VARCHAR(1)和在代碼我定義像的數組:如何包含Yii常用數據?

userTypes陣列
'C'=>串 '客戶'
'O'=>字符串「正式
'F'=>字符串「金融
'T'=>字符串 'clearancer'
'A'=>字符串 '管理員'

有很多這方面的東西,我WA娜娜知道什麼是最好的方式來處理它。

+0

什麼樣的數據?你能舉一個例子嗎?一般來說,創建自定義模型是一個合理的選擇。 – Jon

+0

我更新了問題。 – HPM

+0

您是否已經擁有了一個'User'模型,其中有一個屬性可以分配這些值? – Jon

回答

3

由於PHP的性質,有直接的方法來實現這一點。我這樣做,通過創建類來存儲我常用的數據,是這樣的:

class GlobalData { 
const USER_TYPE_CUSTOMER = 'c'; 

static function getUserTypes(){ 
    return array(
    'c' => string 'customer', 
    'o' => string 'official', 
    'f' => string 'financial, 
    't' => string 'clearancer', 
    'a' => string 'administrator'); 
} 
} 

然後我用它喜歡:

$ USERTYPE =全球國際:: getUserTypes(); echo $ userType [USER_TYPE_CUSTOMER]; //要顯示客戶的用戶類型

但有一個yii extension that let's you create enums(爲了節省時間,但像我告訴你的工作),你應該檢查出來。

希望這會幫助你,我不確定這是你想要的。

+2

我這樣做。但對於用戶類型,我會在'User'模型中創建一個靜態方法'optsType()'或'types()'。 –

+0

是的,您的評論是保留模型中所有模型相關數據的方法。 – Skatox

+1

沒關係,但在一些像5.1.6這樣的較老的PHP版本中,沒有辦法獲得像這樣的元素:GlobalData :: getUserTypes()['f'],有時候它非常重要ro直接獲取數組的元素。例如在用戶類型的cgridview值中是一個將在稍後進行評估的字符串,所以它不能在一個命令中獲取。 – HPM