Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous !
J'utilise la bibliothèque writeexcel pour générer des fichiers Excel en PHP.
Le code d'écriture du fichier Excel est dans ma vue, et comme il est long et complexe, je voulais le découper grâce à partial(), tout comme je le fais pour la version HTML de cette vue.
Mais je me trouve confronté à un problème : que je passe l'objet worksheet à mes vues partielles via les paramètres de partial ou via le registre, dans tous les cas mon fichier est toujours vide en sortie...
Je soupçonne que l'objet que je manipule dans ma vue partielle est un clone de celui que j'ai passé en paramètre, et donc il n'écrit pas dans le fichier que j'envoie au client à la fin de la vue. Y a-t-il un moyen de transmettre cet objet à mes vues partielles par référence ?
Merci d'avance.
Hors ligne
Les objets sont toujours passés par référence en PHP5
Hors ligne
Salut,
Quand tu passes des variables à un partial, le ZF ne fait qu'assigner ces variables aux clés correspondantes dans la vue du partial, tout comme tu le ferais dans une action de contrôleur ($this->assign('objet', $objet)).
Dans le cas d'un objet, heureusement il n'est pas cloné sinon ce serait la catastrophe. Par contre attention, si tu passes directement l'objet et non pas l'objet dans un array et qu'une méthode toArray() existe dans l'objet, elle sera invoquée.
Ex.
echo $this->partial('toto.phtml', $this->monObjet);
Si monObjet a une méthode toArray(), elle sera invoquée (si je ne me trompe pas). Du coup chaque propriété de l'objet sera accessible comme une variable de vue, monObject->truc sera accessible dans le partial part $this->truc.
2ème Ex.
echo $this->partial('toto.phtml', array('monObjet' => $this->monObjet);
Ton objet sera accessible normalement dans le partial via $this->monObjet ($this->monObjet->truc).
Je pense que ton problème vient surtout de l'ordre dans lequel sont rendus les vues et les partials qui n'est peut-être pas celui que tu penses.
A+ benjamin.
Hors ligne
Hum... C'est bizarre cette histoire...
Bon au moins ça m'enlève le doute au sujet du passage d'objet. J'avais oublié de préciser, mais je passais bien l'objet dans un tableau.
Bon de toute façon après réflexion, je pense que j'aurais besoin de ce code de génération Excel à d'autres endroits dans mon application, alors je vais plutôt créer une aide de vue qui s'occupera de ça, et je me contenterai de l'appeler dans ma vue.
Merci pour les précisions !
Hors ligne