Les partiels d'affichage sont rendus avec une portée variable propre ... Autrement dit, ils n'héritent pas des variables d'affichage de l'instance Zend_View
d'appel.
Il y a quelques options à votre disposition ici:
One, appelez simplement:
echo $this->render('_header.phtml');
au lieu d'utiliser une partie. Ce fichier aura accès à toutes vos variables d'affichage, de sorte que vous pouvez simplement affecter le formulaire à votre vue dans votre contrôleur, comme toute autre chose.
Une autre façon est de transmettre explicitement votre forme comme une variable à la partie, comme suit:
echo $this->partial('_header.phtml', array('form' => $this->form));
// $this->form inside your partial will be your form
Votre autre option est soit à l'utilisation des espaces réservés, ou des segments de réponse de mise en page. Voici un exemple d'espaces réservés:
Dans votre _header.phtml
, ou la mise en page ... où vous voulez la forme de rendre:
<?php echo $this->placeholder('header'); ?>
Et dans votre contrôleur:
$this->view->placeholder('header')->append($form);
// I'm not sure, but you _may_ want to pass in $form->render() here.
// I can't remember if implode() (which is used in placeholders internally)
// will trigger the __toString() method of an object.
Cela a le bonus supplémentaire de ne pas polluer votre instance de vue avec des variables uniques, comme le formulaire.
Remarque: Je ferai un lien vers les pages de manuel dès que le site ZF sera de nouveau disponible. 1.9 lancement est aujourd'hui, de sorte que le site est mis à jour actuellement.
Voici quelques pages de manuel pertinentes:
réponse Wonderfull, merci – opHASnoNAME