CakePHP 4 自定义路由问题与分页器链接

问题描述 投票:0回答:1

描述

你好,

我正在使用 CakePHP 4,并面临分页器链接不尊重我的自定义路由定义的问题。为了给您提供上下文,我设置了一条自定义路线,如下所示:

$builder->connect(
    "/categories/{category}",
    ['controller' => 'Items', 'action' => 'category', 'items'],
    ['routeClass' => DashedRoute::class, 'pass' => ['items'],]
);

在控制器 ItemsController 中,我定义了类别操作,如下所示:

public function category($item_type_slug)
{
    $category_slug = $this->getRequest()->getParam('category');
    $this->loadComponent('Paginator');
    $items = $this->getItemsCatalog($item_type_slug, $category_slug);

    $this->set('items', $items['items'] ? $this->paginate($items['items']) : []);
}

我正在使用 CakePHP 的内置分页来显示项目。访问项目列表的第二页时会出现问题。 Paginator 生成一个遵循 CakePHP 的默认路由模式(“/controller/action/param”)的链接,而不是使用我的自定义路由。因此,到第二页的链接显示为“/items/category/items?page=2”,而不是遵循自定义路由模式“/categories/{category}?page=2”。

我已经搜索了文档和论坛,但没有找到明确的解决方案来使 Paginator 在生成链接时尊重我的自定义路线。如何调整分页器或路由设置,以便分页链接遵循我定义的自定义路由?

任何正确方向的建议或指示将不胜感激。预先感谢您的帮助!

CakePHP 版本

4

PHP版本

8

php cakephp pagination cakephp-4.x
1个回答
0
投票

问题解决了! 问题是我构建路线的方式,这是最好的方法:

$builder->connect(
    "/:category/:item",
    ['controller' => 'Categories', 'action' => 'item'],
    [
        'routeClass' => DashedRoute::class,
        'pass' => ['category', 'item'],
        'metier' => '[a-z]+',
        'lieu' => '[a-z]+'
    ]
);
© www.soinside.com 2019 - 2024. All rights reserved.