2009-11-09 2 views

Répondre

2
Zend_Registy::set('PartialCount', count($iterable)); 
$this->partialLoop($script,$iterable); 

puis dans votre vue

$count = Zend_Registy::get('PartialCount'); 

rapide et merdique, mais travailler. L'autre façon serait d'étendre l'assistant PartialLoop;)

+0

ouais je me doutais que je peux utiliser le Registre mais c'est vraiment hacky, chanceux dans ce cas je compte le faire fonctionner en changeant la position de la balise fautive donc pourrait faire un test comme 'if ($ this-> partialCounter == 1)' mais ce n'est pas vraiment satisfaisant .. se demander pourquoi ils ne mettent pas un total partiel ou quelque chose comme ça – RageZ

+0

l'autre possibilité est d'injecter le compte à l'objet iterabler. Pas tableau (0 => tableau ('rouge' => 10), 1 => tableau ('rouge' => 5)); utilisez array (0 => array ('red' => 10, 'count' => 2), 1 => array ('red' => 5, 'count' => 2)); Mais c'est aussi un hack et encore plus c'est un hack moins efficace: D –

4

Afin d'obtenir le nombre total d'éléments, vous devrez soit étendre Zend_View_Helper_PartialLoop pour fournir une méthode qui renvoie le nombre de l'objet itérable utilisé par le PartialLoop .

Ou, et je dirais que cela est probablement plus facile, juste obtenir le nombre d'éléments dans l'objet avant de le transmettre dans le PartialLoop puisque vous devez soit un objet Traversable ou un tableau réel dans l'aide PartialLoop et les deux implémenter le support de count().

De la documentation:

<?php // partialLoop.phtml ?> 
    <dt><?php echo $this->key ?></dt> 
    <dd><?php echo $this->value ?></dd> 


<?php // MyController.php 

    public function indexAction() 
    { 
     $this->view->$model = array(
           array('key' => 'Mammal', 'value' => 'Camel'), 
           array('key' => 'Bird', 'value' => 'Penguin'), 
           array('key' => 'Reptile', 'value' => 'Asp'), 
           array('key' => 'Fish', 'value' => 'Flounder'), 
          ); 

     $this->view->modelCount = count($this->view->model); 
    } 

De index.phmtl

<p>Count: <?= $this->modelCount ?></p> 
<dl> 
<?php echo $this->partialLoop('partialLoop.phtml', $this->model) ?> 
</dl> 
+0

@ gabriel1836: Merci pour la réponse, que voulez-vous dire par passer dans le partialLoop? si vous pouvez écrire un petit exemple – RageZ

+0

J'ai besoin du compte dans le partiel ^^ comme le dernier article est différent des autres articles (c'est-à-dire pas de fin de durée ...) – RageZ

+0

@RagZ - Voulez-vous dire que vous voulez connaître la position actuelle du tableau ou de l'objet itérable et pas seulement le nombre total d'éléments dans le tableau ou l'objet? –

Questions connexes