将参数传递给zend paginationControl partial

时间:2011-04-21 17:32:32

标签: php zend-framework pagination partial

我有一个显示大量数据的页面,包括Zend_Paginator。 页面操作为/po/fetch?id=someID

我想要做的是将“id”参数传递给zend paginationControl,这样分页链接就像/po/fetch?id=someID&page=somePage。不幸的是,我无法找到关于如何将该参数传递给paginationControl的任何解释。

我对paginationControl的调用:

echo $view->paginationControl($paginator, 'Sliding',$control, $params);

其中$params = array('id' => someID

我的分页部分是:

<a href=<?= $url.'&page='.$this->first; ?> id="first"> First </a>

<a href=<?= $url.'&page='.$this->previous; ?> id="previous">&lt; Previous</a>

<?php 
foreach($this->pagesInRange as $page) {
?>
        <a href="<?= $url.'&page='.$page; ?>">.$page.</a>  | ;
<?php 
}
?>

<a href=<?= $url.'&page='.$this->next;?> id="next"> Next &gt;</a>

<a href=<?= $url.'&page='.$this->last; ?> id="last"> Last </a>

我希望$url具有指定的格式。

4 个答案:

答案 0 :(得分:10)

$this->id 

答案 1 :(得分:9)

嘿试试这个,肯定会有用.....

<a href="<?php echo $this->url(array('page' => $page,'id'=>'1')); ?>">
    <?php echo $page; ?>
</a>

这里给出1作为你必须传递你想要的身份证的身份....... 像

<a href="<?php echo $this->url(array('page' => $page,'id'=>$param['id'])); ?>">
        <?php echo $page; ?>
    </a>

答案 2 :(得分:3)

您的示例代码未显示填充$url的方式,但您确实应该使用网址ViewHelper

因此,例如 - 您之前的链接将变为:

<a href=<?php echo $this->url(array('page' => $this->previous)); ?> id="previous">&lt; Previous</a>

这将返回当前页面的正确URL,page参数设置为$this->previous。因此,如果当前网址为/users/view?foo=bar&page=5,则上述代码将为前一个链接输出/users/view?foo=bar&page=4。请注意如何保留已存在的任何查询参数。

因此,如果显示您的分页器的URL上已存在id参数,则上述代码将“正常工作”。但是,如果您仍需要添加id参数,则可以这样执行:

<a href=<?php echo $this->url(array('page' => $this->previous, 'id' => $this->id)); ?> id="previous">&lt; Previous</a>

要继续我们之前的示例,此代码将输出以下网址:/users/view?foo=bar&page=4&id={someId}

以下是URL ViewHelper的参考文档:

  

url($ urlOptions,$ name,$ reset):   根据命名创建URL字符串   路线。 $ urlOptions应该是一个   键/值对的关联数组   由特定路线使用。

最后一个注意事项 - URL ViewHelper的$reset(第三个)参数将非常方便。默认行为是保留当前请求的任何查询参数,但为$this->url(array(), 'default', true)参数true调用$reset将基本删除除$urlOptions中指定的参数之外的所有参数}。

答案 3 :(得分:0)

我遇到了同样的问题,所以我在部分分页器中使用了下面给出的代码。

我在paginator部分视图文件( override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { switch editingStyle { case .Delete: let context = fetchedResultsController.managedObjectContext let section = indexPath.section let currentRow = indexPath.row for index in 0...currentRow { let indexPathToDelete = NSIndexPath(forRow: index, inSection: section) let objectToDelete = fetchedResultsController.objectAtIndexPath(indexPathToDelete) as! NSManagedObject context.deleteObject(objectToDelete) } do { try context.save() } catch let error as NSError { print(error) } case .Insert, .None: break } } )中创建了一个函数,或者可能不同。

control.phtml

现在我正在使用下面给出的代码链接。

function queryStr($p){
    $params = $array = Zend_Controller_Front::getInstance()->getRequest()->getQuery();
    $params['page']=$p;
    $str='?';
    foreach($params as $k=>$v){
        if($v)
           $str .= $k.'='.$v.'&';
    }
    return $str;
}

而不是

<a href="<?php echo queryStr($page); ?>">

我相信它对其他人也有帮助。