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 に答える