Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 视图中的大开关_Model View Controller_View_Symfony1 - Fatal编程技术网

Model view controller 视图中的大开关

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; ...

我是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;?>" /> 
开关($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
是否已打开。