在Zend Framework中的视图或控制器中设置变量是否更好?

joe*_*von 2 php model-view-controller zend-framework view-helpers

我的问题需要一些设置,所以请耐心等待:

我成为了一个转换,使用View Helpers从模型中获取数据,而不是将其全部洒在控制器上(帽子提示给Eric Clemmons).它在那里更具可重用性和灵活性.我就喜欢!

我通常做的是在index.phtml中布置模板,然后当我需要从模型中获取内容时,将该片段放在detail.phtml中,因此逻辑尽可能远.

但是,我开始看到需要重用的变量.例如,类别名称.现在,您不希望使用视图助手来反复从模型中获取cat名称.虽然你可以缓存它,但显然太麻烦了.

所以我开始在detail.phtml中使用几行php来设置变量.它再也闻不到了.观点不应该有太多的逻辑.

那你说什么呢?如果var被重用,把它放在控制器中?或者不介意在视图中设置几个变量?

编辑:Alan Storm问了一个viewhelpers的例子:

detail.phtml:

<ul id="productList">

<? foreach($this->getProductById($id) as $product) : ?>
    <li><?= $this->escape($product['name']) ?></li>
<? endforeach; ?>

</ul>
Run Code Online (Sandbox Code Playgroud)

(支持自己攻击反短标签)

另一个编辑:我看到没有2个正确的答案.那好吧...

Bil*_*win 5

Controller和View都不用于存储应用程序状态.这就是模型的用途.

请记住,MVC中的"模型"不是数据库表!Model是您为应用程序实现业务逻辑的地方,将其存储在数据库中是Model的内部实现细节.但是,您可以在应用程序中使用与数据库无关的模型.