2011-01-25 10 views
6

estoy bastante confundido cómo utilizar partialLoopCómo utilizar Loop parcial de Zend Framework con objetos

Actualmente uso

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

$childrenTodos es una Doctrine\ORM\PersistantCollection, $childTodo es una Application\Models\Todo

He intentado hacer

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

Pero en el parcial cuando intento acceder a las propiedades/funciones de mi clase Todo, parece que no puedo obtenerlas siempre terminando con una llamada al método indefinido Zend_View::myFunction() cuando uso $this->myFunction() en el parcial o si intento $this->todo->getName() me sale " Llamar a una función miembro getName() en un no objeto ". ¿Cómo uso partialLoops?

Respuesta

8

Prueba este

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

Luego, en su parcial se puede acceder al objeto como éste

$this->object 

object es el nombre de la variable que un objeto se le asignará a

Usted también puede hacer esto una vez en su Bootstrap u otra clase de inicialización si tiene acceso al objeto de vista como

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

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

no estoy seguro de por qué todavía estoy recibiendo la llamada a la función en caso de error no objeto, mi código http://pastebin.com/z07phdHj. Lo extraño es cuando intento 'echo get_class ($ this-> todo)' obtengo 'Zend_View' –

+1

Puedes intentar configurarlo en tu Bootstrap o similar, podría ser que tu le digas que use' todo' para objetos después el 'partialLoop' como ejecutar? –

+2

Creo que será una mejor idea configurarlo simplemente b4 'echo $ this-> partialLoop()' ya que no es una aplicación general. Gracias de cualquier manera –

1

También tuve el error "Call to function on no object" cuando intento la sintaxis sugerida, parece que han cambiado algo en las versiones posteriores de Zend Framework. Las siguientes obras para mí en ZF1.12:

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