Я использую CakePHP V3.5.10
Как только я испеку свой код, любой пагинатор работает, потому что добавляет это args
переменная, которая выглядит так:
domain.com/admin/categories?args=&page=3
Итак, когда я var_dump
это я получаю это: var_dump($this->request->params);
array(9) {
["controller"]=>
string(10) "Categories"["pass"]=>
array(0) {
}
["action"]=>
string(5) "index"["prefix"]=>
string(5) "admin"["plugin"]=>
NULL
["_matchedRoute"]=>
string(18) "/admin/:controller"["?"]=>
array(1) {
["args"]=>
string(0) ""}
["_ext"]=>
NULL
["isAjax"]=>
bool(false)
}
если вы можете увидеть место, где обычно должно быть "page"
является "args"
вместо
поэтому я проверяю мое приложение diff и как обычно должно выглядеть так:
Здоровый URL: domain.com/admin/categories?page=3
array(9) {
["controller"]=>
string(10) "Categories"["pass"]=>
array(0) {
}
["action"]=>
string(5) "index"["prefix"]=>
string(5) "admin"["plugin"]=>
NULL
["_matchedRoute"]=>
string(18) "/admin/:controller"["?"]=>
array(1) {
["page"]=>
string(1) "2"}
["_ext"]=>
NULL
["isAjax"]=>
bool(false)
}
Как вы можете видеть здесь, у меня есть
array(1) {
["page"]=>
string(1) "2"
Так вот почему не работает paginator, потому что не может прочитать ?page
плюс проходит это ?args
что пусто … но что неизвестно, так это почему paginator будет вести себя так? и что делать, чтобы это работало?
Если есть кто-то, кто мог бы помочь с этим, я буду очень благодарен. Я сравнивал даже коды пагинатора и, конечно, понятия не имею, почему это происходит.
ОК, если вы обнаружите эту ошибку из-за способа передачи данных
Пример: ?page=1&sort=name&direction:asc
это не CakePHP способ обработки параметров.
Правильный формат URL в торте должен выглядеть так: domain.com/2/name/asc
То, как я в конечном итоге передать параметры в routes.php
:
$routes->connect('/productoptions/:page/:sort/:direction', ['controller' => 'Productoptions', 'action' => 'index'], ['param' => ['page'], 'param2' => ['sort'], 'param3' => ['direction'] ]);
Так что я могу использовать $this->request->params['page]
, $this->request->params['direction]
так далее…
Таким образом, я использую способ передачи и обработки параметров CakePHP вместо $_GET
Других решений пока нет …