2012-07-03 22 views
2

我正在使用Yii,但我試圖理解一個很好的邏輯來實現這一點,所以即使你不是Yii熟練的人,我也可以使用幫助。根據給定的db記錄顯示一個css類

我們有那些事件類型有可能包含特殊字符,名稱:

「AMCA」

「阿里Çulo」

等等

我不能簡單抓住這些名稱並靜態調用視圖中的模型以顯示這些名稱,因爲我將得到一個無效的CSS類。

型號:

/** 
* @desc Get Event Type Name normalized. 
* @param int $id 
* @return object 
*/ 
public function getEventTypeName($id) { 
    return normalizer_normalize(self::model()->findByPk($id)->name); 
} 

的觀點:

<p class="event-resume-<?= function_exists('normalizer_normalize') ? EventType::getEventTypeName($data->event->type) : '';?>"></p> 

我試着用戶normalizer_normalize但是,它不會與「阿里Çulo」由於詞之間的空間中工作。

的邏輯問題:

我們可以創建一個說的方法:

如果ID爲1,然後返回名爲「nameoftype1」
常量字符串如果ID爲2,則返回一個名爲「nameoftype2」的常量字符串

但是這不是一個好方法,因爲如果我們以後有另一個數據庫是其他id的,對應於其他類型,我們需要改變這個方法aga在。

這裏有什麼更好的方法?

我應該提供更多信息嗎?請指教。

+0

是否要加載以事件命名的CSS文件,即。 'ali_culo.css'? – adamors

+0

@Örs號我希望只返回一個字符串以便將其作爲類名。然後,在css上,我們可能會有:'.event-resume-ali-culo {// csshere}' – MEM

回答

1

你可以得到事件類型和使用的哈希值,而不是:

<p class="event-resume-<?= md5($data->event->type) ?>"></p> 

這可能會導致.css文件要少讀,但你可以使用註釋來面對這一切。

+0

嗯,真的,我將在html代碼和css類聲明中得到一個奇怪的名稱。但據我們所瞭解的真相,我們正在努力實施,如果有新事件發生,我們應該隨時更改CSS ......你認爲這是一個好方法,還是另一個完全不同的方法應該適用? – MEM

+1

如果你想要很好的名字,你必須使用映射結構。如果您正在使用數據庫,只需將另一個字段('CssClassName')添加到'EventType'表中。如果不是,只需創建一個將數組映射到css類名稱的php數組。無論如何,您不應該按照您的建議將id映射到類名稱。 – linepogl

+0

謝謝。我相信我會用md5。 :) – MEM

相關問題