我想显示行数:paginator zend框架

时间:2011-02-02 10:46:56

标签: zend-framework

我想显示行数:paginator zend framework

示例:

number   productname     price
1.       pen             25.00
2.       Pencil          10.00
3.       Booklet         12.00

我想要显示行数(数字行)。 (从paginator获得)

3 个答案:

答案 0 :(得分:2)

目前我可以想到三种方法可以从/使用paginator获取当前项目编号:

  • 使用foreach的$ key => $项目。在这种情况下,$ key应该是您的商品编号。
  • 使用Zend_Paginator的normalizeItemNumber方法
  • 使用partialView helper

以下示例说明了所有这三种方法:

<强> testAction

 public function testAction() {

        $input = array(
            array(
                'productname' => 'somename',
                'price' => 23                
            ),
            array(
                'productname' => 'somename2',
                'price' => 657                
            )
        );

        $paginator = Zend_Paginator::factory($input);
        $paginator->setCurrentPageNumber(1);

        $this->view->paginator = $paginator;
    }

test.phtml 查看脚本

<div>
    <?php foreach ($this->paginator as $key => $item): ?>

        Item Number (Method 1): <?php echo $key; ?> </br>
        Item Number (Method 2): <?php echo $this->paginator->normalizeItemNumber($item); ?> </br>

    <?php endforeach; ?>                   

    Third Method through partialLoop view helper:
    <?php echo $this->partialLoop('_partials/testPartial.phtml', $this->paginator); ?>

</div>

testPartial.phtml 如下:

<div>
    Item Number (Method 3): <?php echo $this->partialCounter; ?> </br>
    <!-- Other values can be accessed as $this->productname -->
</div>

希望这是你正在寻找的案例。

答案 1 :(得分:0)

我不确定你想要什么,但试一试

$pages = $paginator->getPages();
var_dump($pages);
echo $pages->pageCount;

getPages()包含一些有用的信息,您可以在其中使用有关paginator对象的信息。它将输出如下内容:

object(stdClass)[201]
  public 'pageCount' => int 4
  public 'itemCountPerPage' => int 10
  public 'first' => int 1
  public 'current' => int 1
  public 'last' => int 4
  public 'next' => int 2
  public 'pagesInRange' => 
    array
      1 => int 1
      2 => int 2
      3 => int 3
      4 => int 4
  public 'firstPageInRange' => int 1
  public 'lastPageInRange' => int 4
  public 'currentItemCount' => int 10
  public 'totalItemCount' => int 33
  public 'firstItemNumber' => int 1
  public 'lastItemNumber' => int 10

如果在迭代对象时你可能需要在循环中做一些事情。例如,在您的视图中:

$row = 0;

foreach($this->paginator as $rowNumber => $data)
{
    echo "I am row " . $rowNumber . "<br />";
}

希望有所帮助。

答案 2 :(得分:0)

如果行前面的数字与项目的ID无关,则只需在数据显示的每次迭代中递增一个计数器。

$i = 1;
echo '<ul>';
foreach ($this->paginator as $item){
    echo '<li>' . $i . ' | ' . $item['name'] . ' | ' . $item['price'] . '</li>';
    $i++;
}
echo '</ul>';

使用模数可以使用相同的计数器制作斑马表(交替背景颜色)。

$i = 1;
echo '<ul>';
foreach ($this->paginator as $item){
    if($i % 2 == 0){
        $class = 'even';
    }else{
        $class = 'odd';
    }
    echo '<li class = "' . $class . '">' . $i . ' | ' . $item['name'] . ' | ' . $item['price'] . '</li>';
    $i++;
}
echo '</ul>';