2009-08-17 28 views
1

我已经想出了如何使用PartialLoop帮助程序的setObjectKey方法将模型转换为partialLoops。我想知道是否有一种方法来指定特定的部分循环使用模型密钥,而其他的不使用。现在我想我必须这样做:ZF:在partialLoop中仅用于特定部分的setObjectKey

// 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

不使用setObjectKey()的建议是明显错误的 - 提供的代码肯定无法与对象数组一起工作。直接从manual

如果你的模型是一个对象,你可以 想把它作为一个对象传递给 部分剧本,而不是它 序列化到 的数组变量。您可以通过设置 的“objectKey” [..skip ..]

所以,如果你不想让你的对象序列化要这么做,你必须使用setObjectKey()。由于parial和partialLoop helper都可以从控制器和视图访问(与任何其他视图助手一样),我倾向于全局启用对象键,并将其切换为特定的循环(在循环结束时重新启用)。确实额外打字,但似乎运作良好。

+0

是的,回到这个我结束了使用setObjectKey,它完美的工作。 – typeoneerror 2010-02-03 15:13:55

2

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

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

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

+0

有趣。出于某种原因,我认为我不能像这样访问模型类的神奇数据库方法。我以为我测试过了,但我必须重试。谢谢。 – typeoneerror 2009-10-23 15:55:24