Zend_Paginator Nesne Sorunu ile PartialLoop

3 Cevap php

Bir Zend_Paginator Nesne içinde findParentRow() yöntemi kullanmak mümkün mü? Ben bir DB resultset dan fetchAll tarafından döndürülen bir nesne üzerinde çalışıyor ve gayet iyi çalışıyor bazı kod çalışıyorum. Zend_Paginator nesne ile olsa çalışmaz.

Benim denetleyicisi i var:

public function downloadedAction()
{
    $images = new Model_ApplicationImages();
    $paginator = $images->fetchPaginated();
    $paginator->setCurrentPageNumber($this->_getParam('page'));
    $this->view->paginator = $paginator;
}

Benim modelde i var:

public function fetchPaginated()
{
    $select = $this->select()
                   ->from($this->_name)
                   ->where('status = ?','approved')
                   ->where('downloaded = ?','0');
    $adapter = new Zend_Paginator_Adapter_DbSelect($select);
    $paginator = new Zend_Paginator($adapter);
    $paginator->setItemCountPerPage(10);
    return $paginator;
}

Benim görüşüme i var:

    $this->partialLoop()->setObjectKey('paginator');
    echo $this->partialLoop('admin/list-downloaded.phtml', $this->paginator); 

ve kısmi olarak:

    $this->paginator->findParentRow('Model_Application')->name

Nesne anahtarının kullanılmadığı veya içinde düzgün olarak ayarlı değil ama göründüğü kısmi var_dump($this->paginator) NULL ve paginator gelen geçirilen diğer değerler var ama {[altında (2)]} olup $this->paginator->key onlar olması gerektiği gibi

3 Cevap

A PartialLoop esas diziye ya da iletilen Traversable nesne her bir elemanı için bir Partial çalışır. Bu yüzden kısmi görünümü komut alır zaman, sen Paginator nesne ile çalışmak artık, ama onun paginated içeriği ile.

Kısmi bir döngü içinde, setObjectKey() kısmi düzeyde çalışır. Olacak sonra size Traversable nesneleri (veya Traversable nesneler üzerinde dolaşır bir Traversable nesne) her nesnenin kısmi döngü ve kısmi olarak bir dizi iletebilirsiniz nesne anahtarının erişilebilir.

Kullandığınız DbSelect paginator adaptörü, ancak, bir array her sayfa için satır döndürür, böylece {koymak için herhangi bir nesne yoktur [(2)] } tuşuna nesne ve kullanılmayan kalır.

Sen bir satır dönecektir bunun yerine DbTableSelect adaptörünü kullanmalısınız.

Eğer paginator kendisine erişim gerekiyorsa yerine kısmi kullanmalısınız. Bu şekilde setObjectKey() paginator kendiniz sayfaları üzerinde döngü için kullanabilirsiniz.

Ben bir şey beklediğiniz şekilde çalışmıyor zaman kullanışlı Zend Framework kaynak kodunu tutmanızı öneririz. Ne yazık ki, ben belgelerine okuyarak daha kod okuyarak kullanmak için nasıl bulmaktan daha fazla başarı elde ettik.

Aslında sağlanan örnek kod oldukça doğrudur, ben bir adaptör olarak Zend_Paginator_Adapter_DbTableSelect kullanılan olsa, çok benzer bir kurulum var. Yani, ilke olarak kesinlikle mümkündür.

Bu denetleyici eylem,) fetchPaginated (döndürülen ne incelemeye değer.

Muhtemelen kontrol değer başka bir şey, (ayrı nedenden dolayı kötü bir şey olduğu) $ view-> paginator sizin bakış komut yazılır almaz olmadığıdır. Artı, aslında), nesne anahtar adı ile oynamak yerine setObjectKey in "paginator" (örneğin "modelini" kullanabilirsiniz.

P.S. Değil alakalı olup olmadığını emin değilim ama ben kurulum denetleyicisi nesne anahtar:

$this->view->partialLoop()->setObjectKey('model');
$this->view->partial()->setObjectKey('model');

Zend_Paginator_Adapter_DbSelect dizisi ve Zend_Paginator_Adapter_DbTableSelect satır kümesi getItems() yöntemi döndüren bir getItems() yöntemi, sadece Zend_Paginator_Adapter_DbTableSelect, değil {kullanın [(1)]} ...