2011-01-25 13 views
6

Sono abbastanza confuso come utilizzare partialLoopCome usare Loop parziale di Zend Framework con gli oggetti

Attualmente io uso

foreach ($childrenTodos as $childTodo) { 
    echo $this->partial('todos/_row.phtml', array('todo' => $childTodo)); 
} 

$childrenTodos è un Doctrine\ORM\PersistantCollection, $childTodo è un Application\Models\Todo

Ho provato a fare

echo $this->partialLoop('todos/_row.phtml', $childrenTodos) 
      ->setObjectKey('Application\Models\Todo'); 

Ma nel parziale quando provo ad accedere alle proprietà/funzioni della mia classe Todo, non riesco a farle finire sempre con entrambe le chiamate al metodo non definito Zend_View::myFunction() quando uso $this->myFunction() nel parziale o se provo $this->todo->getName() ottengo " Chiama una funzione membro getName() su un non oggetto ". Come posso utilizzare partialLoops?

risposta

8

Prova questo

echo $this->partialLoop('todos/_row.phtml', $childrenTodos) 
     ->setObjectKey('object'); 

Poi, nel tuo parziale è possibile accedere all'oggetto come questo

$this->object 

object è il nome della variabile che un oggetto verrà assegnato al

È può anche farlo una volta nel Bootstrap o in un'altra classe di inizializzazione se si ha accesso all'oggetto della vista, ad esempio

protected function initPartialLoopObject() 
{ 
    $this->_view->partialLoop()->setObjectKey('object'); 

    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); 
    $viewRenderer->setView($this->_view); 
} 
+1

Non sono sicuro del motivo per il quale sto ancora ricevendo la chiamata per funzionare su errore non oggetto, il mio codice http://pastebin.com/z07phdHj. La cosa strana è quando provo 'echo get_class ($ this-> todo)' ottengo 'Zend_View' –

+1

Puoi provare ad impostarlo nel tuo Bootstrap o simile, potrebbe essere che lo stai dicendo di usare' todo' per gli oggetti dopo il 'partialLoop' come eseguito? –

+2

Penso che sia una buona idea impostarlo solo su b4 'echo $ this-> partialLoop()' dato che non è un'app generale. Grazie comunque –

1

Avevo anche l'errore "Chiama per funzionare su non oggetto" quando si tenta la sintassi suggerita, sembra che abbiano cambiato qualcosa nelle versioni successive di Zend Framework. I seguenti lavori per me su ZF1.12:

echo $this->partialLoop() 
->setObjectKey('object') 
->partialLoop('todos/_row.phtml', $childrenTodos);