2009-12-17 7 views
4

Je suis nouveau sur Zend Framework et je ne sais pas si c'est possible.Zend Framework Comment lister les éléments de formulaire en utilisant partialLoop

Je souhaite utiliser partialloop pour créer une table avec les champs de formulaire.

J'utilise ce code dans la vue:

<!-- code in views/scripts/request/edit.phtml --> 

<table cellpadding='0' cellspacing='0'> 
    <tr> 
     <th>Cliente</th> 
     <th>Descripcion</th> 
    </tr>   
    <?php echo $this->partialLoop('partials/_solicitud-row.phtml', $this->form); ?>   
</table> 

Et dans la partie i essayé ceci:

<!-- code in views/scripts/partials/_solicitud-row.phtml --> 
<tr>  
<td><?php echo $this->key . "=" . $this->value; ?></td> 

</tr> 

Et ce

<!-- code in views/scripts/partials/_solicitud-row.phtml --> 
<tr>  
<td><?php echo $this->Descripcion; ?></td> 
<td><?php echo $this->cliente; ?></td> 
<td><?php echo $this->FechaHoraCreada; ?></td> 
<td><?php echo $this->Monto; ?></td> 

</tr> 

L'utilisation de ce que je reçois le titres de la table (<tr><th>Cliente</th><th>Descripcion</th></tr>) mais rien de plus. Je sais que le partiel est traité car en utilisant le premier partiel, les égales "=" sont listées.

Est-ce que cela a du sens pour moi? existe-t-il un moyen d'accéder aux éléments de formulaire? J'ai essayé d'autres options comme $ this-> getElement .., mais n'a pas fonctionné

Merci!

Répondre

6

La fonction partialLoop est en mesure de traiter vos éléments de formulaire, mais vous devez sauvegarder un peu:

<!-- code in views/scripts/request/edit.phtml --> 
    <?php 
    $model = array(); 
    foreach ($this->form as $element) { 
     // include the $element itself, instead of the 
     // $element public properties (which are few) 
     $model[] = array('element' => $element); 
    } 
    ?> 
    <?php echo $this->partialLoop('partials/_solicitud-row.phtml', $model); ?> 

.

<!-- code in views/scripts/partials/_solicitud-row.phtml --> 
    <?php echo $this->element->getName(). "=" . $this->element->getValue(); ?> 
+2

GREAT !, cela fonctionne très bien! Désolé je n'ai pas assez de réputation pour voter votre réponse .... –

+0

J'ai voté pour vous Alejandro. – powtac

+0

+1 :) vraiment bonne réponse – SMka

0

Pourquoi ne pas simplement utiliser un décorateur (HtmlTag)? J'utilise div est

$this->setElementDecorators(array(
     array('HtmlTag', array('tag' => 'div', 'class'=>'formRow')) 
    )); 

mais une table ne devrait pas être beaucoup plus difficile