我正在使用Yii,但我正在努力理解实现这一目标的良好逻辑,所以即使你不是Yii精通我也可以使用帮助。
我们有事件类型,其名称可能包含特殊字符,如:
“AMCA”
“ÁliÇ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,但是由于单词之间的空格,它不适用于“ÁliÇulo”。
逻辑问题:
我们可以创建一个方法:
如果id为1,则返回名为“nameoftype1”的常量字符串
如果id为2,则返回名为“nameoftype2”的常量字符串
但这不是一个好方法,因为如果我们以后有另一个数据库是其他id,对应其他类型,我们需要再次改变这个方法。
这里有什么更好的方法?
我应该提供更多信息吗?请指教。
答案 0 :(得分:1)
您可以获取事件类型的哈希值,然后使用它:
<p class="event-resume-<?= md5( $data->event->type ) ?>"></p>
这可能会导致.css文件的可读性降低,但您可以使用注释来处理。