【问题标题】:passing parameters to zend paginationControl partial将参数传递给 zend paginationControl 部分
【发布时间】:2011-08-10 11:59:00
【问题描述】:

我有一个显示大量数据的页面,包括 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 具有指定的形式。

【问题讨论】:

    标签: php zend-framework pagination partial


    【解决方案1】:
    $this->id 
    

    【讨论】:

      【解决方案2】:

      您的示例代码没有显示 $url 的填充方式,但您确实应该使用 URL ViewHelper

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

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

      这将返回到当前页面的正确 URL,并将 page 参数设置为 $this-&gt;previous。所以如果当前的 url 是/users/view?foo=bar&amp;page=5,上面的代码会为上一个链接输出/users/view?foo=bar&amp;page=4。请注意如何保留已存在的任何查询参数。

      所以,如果 id 参数已经出现在显示分页器的 URL 上,那么上面的代码将“正常工作”。但是,如果您仍然需要添加 id 参数,您可以这样做:

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

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

      这里是 URL ViewHelper 的参考文档:

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

      最后一点 - URL ViewHelper 的$reset(第三个)参数将非常方便。默认行为是保留当前请求的所有查询参数,但使用 true 调用 $this-&gt;url(array(), 'default', true)$reset 参数将基本上删除除您在 $urlOptions 中指定的参数之外的所有参数。

      【讨论】:

        【解决方案3】:

        嘿试试这个,它肯定会工作.....

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

        这里1 是你必须传递你想要的id的id....... 喜欢

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

        【讨论】:

        • 出于某种原因 $param 在我的情况下为空...@vredniy 的回答对我有用。
        • 上面的 $param[] 方法只适用于设置了该值和键的数组。 $this-&gt;id 为你工作,因为你有单例 $this 对象集
        【解决方案4】:

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

        我在分页器部分视图文件(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); ?>">
        

        代替

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-02
          • 1970-01-01
          • 1970-01-01
          • 2019-01-05
          • 1970-01-01
          • 2018-05-01
          相关资源
          最近更新 更多