2009-08-17 5 views
1

J'ai trouvé comment obtenir des modèles dans partialLoops en utilisant la méthode setObjectKey de l'assistant PartialLoop. Ce que je me demande s'il existe un moyen de spécifier que les boucles partielles spécifiques utilisent la clé du modèle et que d'autres ne le font pas. En ce moment je pense que je dois faire quelque chose comme ceci:ZF: Utilisation de setObjectKey dans partialLoop pour des partiels spécifiques

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

Un moyen de contourner cela?

Répondre

2

Suggestion de ne pas utiliser setObjectKey() est tout à fait faux - le code fourni ne fonctionnerait certainement pas avec un tableau d'objets. Droit de la manual:

Si votre modèle est un objet, vous pouvez voulez avoir passé comme un objet à le script partiel, au lieu de sérialisation à un tableau de les variables. Vous pouvez le faire en mettant en le « objectKey » [..skip ..]

Donc, si vous ne voulez pas que vos objets à sérialisés, vous devez utiliser setObjectKey(). Comme les helpers parial et partialLoop sont tous deux accessibles depuis le contrôleur et la vue (comme tout autre assistant de vue), j'ai tendance à activer globalement la clé d'objet, et à la basculer en boucle particulière (réactivation en boucle). Extra tapant à coup sûr, mais semble bien fonctionner.

+0

Oui, en revenant à ceci j'ai fini par utiliser setObjectKey et ça a fonctionné parfaitement. – typeoneerror

2

Ma solution n'utiliserait PAS setObjectKey(). Pourquoi ne pas simplement le faire:

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

Cela a le même effet que l'utilisation de setObjectKey(). Dans this article sur mon blog, je explique plus à ce sujet.

+0

Intéressant. Pour une raison quelconque, je pensais que je ne serais pas en mesure d'accéder aux méthodes de base de données magiques d'une classe de modèle en le faisant comme ça. J'ai pensé que je l'ai testé, mais je vais devoir réessayer. Merci. – typeoneerror