我有两条路线:一条路线,另一条路线非常具体。它们具有共同的控制器和动作,但特殊路径具有附加参数special
:
$routes->connect('/special_products', ['controller' => 'Products', 'action' => 'index', 'special' => 1]);
$routes->connect('/products', ['controller' => 'Products', 'action' => 'index']);
除了分页之外,这是按预期工作的。如果我在/special_products
页面上并点击第2页,我会转到/products?page=2
而不是预期的/special_products?page=2
。
如何更改路线或分页,以便special
参数不会丢失?
答案 0 :(得分:1)
我建议您使用搜索插件,而不是编写自己的控制逻辑。最受欢迎的两个是:
正确配置后,您可以使用查询字符串将参数传递给您的操作。
您的路线看起来像
$routes->connect('/special_products', [
'controller' => 'Products',
'action' => 'index',
'?' => ['special' => 1]
]);
答案 1 :(得分:0)
现在尝试添加$this->Paginator->options(['url' => $paginateUrl])
,您可以在页面之间传递参数
这里有一个简单的例子
<强> index.ctp 强>
<?= $this->Paginator->options(['url' => $paginateUrl]) ?>
<?= $this->Paginator->prev('< ' . __('previous')) ?>
<?= $this->Paginator->numbers() ?>
<?= $this->Paginator->next(__('next') . ' >') ?>
<强>的ProductsController 强>
public function index()
{
...
if($this->request->param('special')) {
$paginateUrl = ['special' => 1];
}
$this->set('paginateUrl', isset($paginateUrl) ? $paginateUrl : []);
...
}