ZF:在partialLoop中仅对特定部分使用setObjectKey

时间:2009-08-17 02:56:21

标签: php zend-framework partials

我已经想出如何使用PartialLoop帮助器的setObjectKey方法将模型转换为partialLoops。我想知道是否有一种方法来指定特定的部分循环使用模型键而其他部分循环不使用。现在我想我必须做这样的事情:

// sets the object key for ALL partialLoops
$this->partialLoop()->setObjectKey("model");
// do the thing
echo $this->partialLoop("elements/recent-blog.phtml", $this->blogs);
// reset the object key so further partialLoops do NOT use the key
$this->partialLoop()->setObjectKey(null);

有什么方法吗?

2 个答案:

答案 0 :(得分:2)

我的解决方案是不使用setObjectKey()。为什么不这样做:

echo $this->partialLoop("elements/recent-blog.phtml", array('model' => $this->blogs));

它与使用setObjectKey()具有相同的效果。在我博客上的this文章中,我详细解释了这一点。

答案 1 :(得分:2)

建议不使用setObjectKey()是完全错误的 - 如果代码肯定无法使用对象数组。直接从manual

  

如果您的模型是对象,您可以   想把它作为一个对象传递给   部分脚本,而不是   将其序列化为一个数组   变量。您可以通过设置来完成此操作   'objectKey'[.. skip ..]

因此,如果您不希望序列化对象,则必须使用setObjectKey()。由于parial和partialLoop助手都可以从控制器和视图访问(与任何其他视图助手一样),因此我倾向于全局启用对象键,并在特定循环中切换它(在循环结束时重新启用)。额外输入肯定,但似乎运作良好。