#php #cakephp #pagination #cakephp-3.0
#php #cakephp #разбивка на страницы #cakephp-3.0
Вопрос:
в моем файле routes я определяю маршрут для моего метода контроллера
$routes->connect('/category/:cat', ['controller' => 'Categories', 'action' => 'category']);
Мой метод контроллера таков
public function category(){
$this->paginate = [
'limit' => 2
];
$this->viewBuilder()->layout('newLayout');
$cat = $this->request->params['cat'];
$id = $this->Categories->findBySlug($cat)->select(['id'])->hydrate(false)->toArray();
$cid = $id[0]['id'];
$category = $this->ProductCategories
->find("all")
->select(['id', 'category_id'])
->where(["category_id" => $cid])
->contain(['Products' => function($q){
return $q->select(['id', 'sku', 'product', 'description', 'slug', 'price', 'off', 'stock', 'product_category_id'])
->where(['status' => 1])
->contain(['ProductImages' => function($q){
return $q->select(['product_id','url']);
}]);
}])->hydrate(false);
$categories = $this->paginate($category);
$this->set(compact('categories'));
$this->set('_serialize', ['categories']);
}
И мой URL-адрес выглядит так:
http://localhost/mizzoli.com/category/Designer-Saree
Теперь, когда я нажимаю на URL-адрес разбивки на страницы, измените его на это
http://localhost/mizzoli.com/categories/category?page=2
Но фактический URL, который я хочу, выглядит так
http://localhost/mizzoli.com/category/Designer-Saree?page=2
А также мне нужно передать какой-то дополнительный параметр с URL-адресом разбивки на страницы, например, цвет, случай и т.д. Пожалуйста, помогите мне получить это. Я не нашел никакого решения.
Ответ №1:
У меня была похожая проблема, и я решил ее, передав нужный мне параметр внутри третьего параметра определения маршрута. Вот так:
$routes->connect('/category/:cat', ['controller' => 'Categories', 'action' => 'category'], ['pass' => ['cat']]);
У меня есть @littleylv из IRC-канала #cakephp на Freenode, чтобы поблагодарить за это решение.
Вы можете прочитать больше о передаче параметров действиям через маршруты здесь: https://book.cakephp.org/3.0/en/development/routing.html#passing-parameters-to-action
Комментарии:
1. Помог ли мой ответ @Aneh?
2. Ссылка на документацию, почему-то пример там не работает. Ваш сделал.