1

我已经弄清楚了如何使用 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);

有什么办法吗?

4

2 回答 2

2

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

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

它与使用 setObjectKey() 的效果相同。在我博客上的这篇文章中,我对此进行了更多解释。

于 2009-10-23T12:30:40.057 回答
2

不使用 setObjectKey() 的建议是完全错误的 - 提供的代码肯定无法处理对象数组。直接从手册

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

所以,如果你不希望你的对象被序列化,你必须使用 setObjectKey()。由于 parial 和 partialLoop 助手都可以从控制器和视图访问(与任何其他视图助手一样),我倾向于全局启用对象键,并将其切换到特定循环(在循环结束时重新启用)。肯定会额外打字,但似乎效果很好。

于 2010-02-03T13:34:24.417 回答