0

我有一个来自控制器的动作,它通过$this->set('found_products', $data);. 视图页面products.ctp分为两个部分:

  1. $found_products在顶部,为视图设置了一个用户输入字符串进行搜索的表单。

  2. $found_products在其下方,仅在设置时显示的分页结果。即是真if (isset($found_products))的。

如果if (isset($found_products))为真,我会在表单下方显示第一页,其中搜索字符串已经在文本框中。这个 URL 是myapp/controller/products.

当我进入下一页时会出现问题。URL 变为myapp/controller/action/products:2并且不存在下使用的任何变量myapp/controller/products。看起来移动到新页面会清除所有变量。下面是我用于分页的代码,我没有为此编写重新路由规则。我该如何解决这个问题?

        <div class="paging">
            <?php echo $this->Paginator->prev('<< ' . __('previous', true), array(), null, array('class'=>'disabled'));?>
            <?php echo $this->Paginator->numbers();?>        
            <?php echo $this->Paginator->next(__('next', true) . ' >>', array(), null, array('class' => 'disabled'));?>
        </div>

我尝试在操作 ( products) 中使用 $_SESSION 来解决这个问题,并将其设置为视图,但是当我这样做时,`$this->Paginator' 不再起作用。

4

1 回答 1

1

您可以使用 $this->Paginator->options 在分页链接中保留传递的参数。试试这个代码

<div class="paging">
    <?php $this->Paginator->options(array('url' => $this->passedArgs)); ?>
    <?php echo $this->Paginator->prev('<< ' . __('previous', true), array(), null, array('class'=>'disabled'));?>
    <?php echo $this->Paginator->numbers();?>        
    <?php echo $this->Paginator->next(__('next', true) . ' >>', array(), null, array('class' => 'disabled'));?>
</div>
于 2012-04-21T06:02:45.010 回答