Zend Numaralandırma - her sayfada sonuç sayısını sınırlayıcı değil gibi görünüyor

2 Cevap php

Ben Zend çerçevesi sadece en muhtemelen iki ay onunla çalışmaya edilerek nispeten yeni duyuyorum. Ben şimdi zend paginator sınıf ve sayfa başına 4 sonuç ile gönderebilirsiniz, ben çalıştırmak bir sorgudan sonuç listesini almak için çalışıyorum, ancak bunun 4 sonuç var ne zaman tanıma gibi görünmüyor, ben bir olduğuna inanıyorum benim kod hata ama bunu görmek beni hayat için, ben burada birileri üzerine almak ve bana yardım ve dışarı ve muhtemelen ben cevapsız o aptal şey söylemek mümkün olacak umuyordum olamaz. Teşekkürler Burada ben yazdım kodudur.

Benim modelinde bu sorgu

public function getAllNews()
{
	$db = Zend_Registry::get('db');

	$sql = "SELECT * FROM $this->_name WHERE flag = 1 ORDER BY created_at";

	$query = $db->query($sql);
	while ($row = $query->fetchAll()) {
    	$result[] = $row;
	}

	return $result;
}

Bu benim denetleyicisi kodu

function preDispatch()
{
$this->_helper->layout->setLayout('latestnews');
	Zend_Loader::loadClass('newsArticles');
	$allNews = new newsArticles();
	$this->view->allNews = $allNews->getAllnews();
	//die (var_dump($this->view->allNews));
	$data = $this->view->allNews;
	// Instantiate the Zend Paginator and give it the Zend_Db_Select instance  Argument ($selection)
    $paginator = Zend_Paginator::factory($data);
	// Set parameters for paginator
    $paginator->setCurrentPageNumber($this->_getParam("page")); // Note: For this to work of course, your URL must be something like this: http://localhost:8888/index/index/page/1  <- meaning we are currently on page one, and pass that value into the "setCurrentPageNumber"
    $paginator->setItemCountPerPage(1);
    $paginator->setPageRange(4);
	// Make paginator available in your views
    $this->view->paginator = $paginator;
	//die(var_dump($data));
}

Aşağıda sayfa numaralarını oluşturur görünümüdür,

    <?php if ($this->pageCount): ?> 
<div class="paginationControl">
<!-- Previous page link --> 
<?php if (isset($this->previous)): ?> 
  <a href="<?= $this->url(array('page' => $this->previous)); ?>">&lt; Previous</a> | 
<?php else: ?> 
  <span class="disabled">&lt; Previous</span> | 
<?php endif; ?> 

<!-- Numbered page links -->
<?php foreach ($this->pagesInRange as $page): ?> 
  <?php if ($page != $this->current): ?>
    <a href="<?= $this->url(array('page' => $page)); ?>"><?= $page; ?></a> | 
  <?php else: ?>
    <?= $page; ?> | 
  <?php endif; ?>
<?php endforeach; ?>

<!-- Next page link --> 
<?php if (isset($this->next)): ?> 
  <a href="<?= $this->url(array('page' => $this->next)); ?>">Next &gt;</a>
<?php else: ?> 
  <span class="disabled">Next &gt;</span>
<?php endif; ?> 
</div> 
<?php endif; ?>

Ve nihayet kod benim görünümü kadar yapar

<div id="rightColumn">
    			<h3>Latest News</h3>
    			<?php if (count($this->paginator)): ?>
    				<ul>
    					<?php foreach ($this->paginator as $item): ?>
    						<?php
    						foreach ($item as $k => $v)
    						{
    							echo "<li>" . $v['title'] . "</li>";
    						}
    						?>

    					<?php endforeach; ?>
    				</ul>
    			<?php endif; ?>

<?= $this->paginationControl($this->paginator, 'Sliding', '/latestnews/partial_pagination_control.phtml'); ?> 
    			</div>

Herhangi bir yardım için bana verebileceğiniz ben minnettar olacaktır.

Teşekkürler

Sico

2 Cevap

Bir kerede sadece 4 kayıtları göstermek için istediğiniz gibi $ paginator 4'e ayarlanmış olmalıdır:

$paginator->setItemCountPerPage(4);

Yani sorunun kök getAllNews fonksiyonu ile model sınıfında olduğunu düşünüyorum. Zend_Db fetchAll fonksiyonu sorgu eşleşen tüm kayıtların bir ilişkisel dizi alır. Eğer select deyimi tarafından alınan tüm satırların bir dizidir bir elementin bir dizi dönüyor.

Bu deneyin:

public function getAllNews()
{
        $db = Zend_Registry::get('db');

        $sql = "SELECT * FROM $this->_name WHERE flag = 1 ORDER BY created_at";

        return $db->fetchAll($sql);
}