Model view controller 视图中的大开关
我是MVC和php框架的新手,所以请原谅我这个简单的问题 我喜欢在没有大量php代码的情况下查看视图,但我确实不知道如何正确地执行 基本上,一些对象有20多个不同的状态,状态由模型给出。 现在我有一个:Model view controller 视图中的大开关,model-view-controller,view,symfony1,Model View Controller,View,Symfony1,我是MVC和php框架的新手,所以请原谅我这个简单的问题 我喜欢在没有大量php代码的情况下查看视图,但我确实不知道如何正确地执行 基本上,一些对象有20多个不同的状态,状态由模型给出。 现在我有一个: switch($object->getState()) { case 0: $sText = '...'; break; case 1: $sText = '... on the'.$object->getDate(); break; ...
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;?>" />
开关($object->getState())
{
案例0:
$sText='…';
打破
案例1:
$sText='…在“$object->getDate()上;
打破
...
案例20:
$sText='…';
打破
}
?>
getState()?>.png“alt=”“
title=”“/>
如果视图中没有40多行php,我怎么做呢?我不想重复
标记20次。对我来说,文本应该属于视图,而不是模型
可能是一个将文本分配给状态的视图帮助程序?视图帮助程序不会使代码变得不明确或更好的MVC。视图的文本可能不属于模型,但确定文本的逻辑肯定不属于视图。编写像
$Model->getVi这样的方法没有错ewTextForState($object->getState())
-这基本上与许多语言的字符串本地化方法相同
这样想吧-视图的alt文本确实属于模型,因为模型负责编组所有数据。如果视图中的某些文本是可变的,那么它实际上就是模型数据,就像从
$object->getState()生成的图像名称一样
方法。图像名称及其alt文本是数据,应使用单行访问方法从模型中提供给视图视图辅助程序不会使代码变得不明确或更好的MVC。视图的文本可能不属于模型,但确定文本的逻辑肯定不属于编写一个像$model->getViewTextForState($object->getState())
这样的方法并没有什么错,这基本上与许多语言的字符串本地化方法相同
这样想吧-视图的alt文本确实属于模型,因为模型负责编组所有数据。如果视图中的某些文本是可变的,那么它实际上就是模型数据,就像从
$object->getState()生成的图像名称一样
方法。图像名称及其alt文本是数据,应使用单行访问方法从模型中提供给视图开关可能在您的操作中,您可以使用如下翻译字符串
$this->sText = 'object_state_' . $object->getState()
然后在您看来,翻译$sText就可以了。开关可能在您的操作中,您可以使用这样的翻译字符串
$this->sText = 'object_state_' . $object->getState()
那么在您看来,翻译$sText就可以了。的确如此,但在我的例子中,有些文本会有参数。例如“未打开”和“在……上打开”。。。。“这使事情变得复杂。只需创建另一个变量来处理参数,并在您的操作中添加一个开关来填充它。alt文本具有参数的事实更强烈地向我表明,跟踪是模型的责任。只有模型才知道
.png
是否已经打开。事实上,在我的例子中,有些文本会有参数。例如“未打开”和“在…上打开”,这使事情变得复杂。只需创建另一个变量来处理参数,并在操作中添加一个开关来填充它。alt文本具有参数的事实更强烈地向我表明,跟踪是模型的责任。只有模型知道.png
是否已打开。