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

发布于 2024-08-02 05:28:44 字数 470 浏览 4 评论 0原文

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

有什么办法解决这个问题吗?

I've figured out how to get models into partialLoops using the setObjectKey method of the PartialLoop helper. What I'm wondering if there is a way to specify that specific partial loops use the model key and other ones don't. Right now I think I have to do something like this:

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

Any way around this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

箹锭⒈辈孓 2024-08-09 05:28:44

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

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

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

Suggestion to NOT using setObjectKey() is plain wrong - provided code would certainly fail to work with array of objects. Straight from the manual:

If your model is an object, you may
want to have it passed as an object to
the partial script, instead of
serializing it to an array of
variables. You can do this by setting
the 'objectKey' [..skip..]

So, if you don't want your objects to be serialized, you have to use setObjectKey(). Since parial and partialLoop helpers are both accessible from controller and view (as any other view helper), I tend to enable object key globally, and switch it of in particular loop (re-enabling at the loop end). Extra typing for sure, but seems to work well.

毅然前行 2024-08-09 05:28:44

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

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

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

My solution would be NOT using setObjectKey(). Why not just do this:

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

It has the same effect as using setObjectKey(). In this article on my blog I explain more about this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文