【问题标题】:ZF: Using setObjectKey in partialLoop for only specific partialsZF:在 partialLoop 中使用 setObjectKey 仅用于特定的部分
【发布时间】:2010-11-20 03:15:16
【问题描述】:

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

有什么办法吗?

【问题讨论】:

    标签: php zend-framework partials


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,回到这一点,我最终使用了 setObjectKey 并且效果很好。
    【解决方案2】:

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

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

    它与使用 setObjectKey() 的效果相同。在我博客上的this 文章中,我对此进行了详细说明。

    【讨论】:

    • 有趣。出于某种原因,我认为我无法像这样访问模型类的魔术数据库方法。以为我测试了它,但我将不得不重试。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多