视图中的大开关

| 我是MVC和php框架的新手,所以请问这个简单的问题... 我希望在没有大量php代码的情况下拥有自己的视图,但在某些情况下我并不真正知道如何正确执行。 基本上某个对象具有20多个不同的状态,并且状态由模型给出。 现在我有一个:
switch($object->getState())
{
  case 0:
    $sText = \'...\'; 
  break;
  case 1:
    $sText = \'... on the\'.$object->getDate(); 
  break;
  ...
  case 20:
    $sText = \'...\'; 
  break;
}
?>
<img src=\"<?echo $object->getState()?>.png\" alt = \"<?echo $sText;?>\" 
title = \"<?echo $sText;?>\" /> 
在视图中没有40多行php的情况下该怎么办?我不想重复
<img>
标签20次。对我来说,文字应该属于视图,而不是模型。 也许是一个视图助手,它将文本分配给州?     
已邀请:
        视图助手不会使您的代码变得更加模棱两可或更好。视图的文本可能不属于模型,但是确定文本的逻辑肯定不属于视图。编写类似
$model->getViewTextForState($object->getState())
的方法没有错-基本上与用于多种语言的字符串本地化的方法相同。 这样想吧-视图的替代文本确实确实属于模型,因为模型负责编组所有数据。如果视图中的某些文本是可变的,则它实际上是模型数据,就像您通过
$object->getState()
方法生成的图像名称一样。图像名称和它的替代文本是数据,应使用单行访问方法从模型提供给视图     
        开关可能在您的操作中,您可以使用这样的翻译字符串
$this->sText = \'object_state_\' . $object->getState()
然后在您看来,翻译$ sText可以解决问题。     

要回复问题请先登录注册