Por doesnt paginator lembro dos meus parâmetros personalizados quando eu ir para a página 2?
-
02-07-2019 - |
Pergunta
Ao usar o ajudante paginator em vista CakePHP, ele não se lembrar partes do URL que são personalizadas para o meu useage.
Por exemplo:
http://example.org/users/index/moderators/page:2/sort:name/dir:asc
aqui moderadores é um parâmetro que me ajuda a filtrar por tipo. Mas pressionando um link paginator não irá incluir este link.
Solução
Para adicionar a resposta de Alexander Morland acima, vale a pena lembrar que a sintaxe mudou em CakePHP 1.3 e agora é:
$this->Paginator->options(array('url' => $this->passedArgs));
Esta é descrito mais adiante na pagination na seção do livro CakePHP vistas .
Outras dicas
O segredo está adicionando esta linha ao seu ponto de vista:
$ paginator-> Opções (array ( 'url' => $ this-> passedArgs));
(Eu criei esta pergunta e resposta, porque é uma questão muito perguntou e eu continuo tendo que cavar a resposta, uma vez que eu não posso lembrar.)
$ this-> passedArgs é a melhor maneira de fazer isso a partir do ponto de vista.
Você me salvou! Isso me ajudou muito, obrigado.
Eu precisava de uma maneira de passar os parâmetros que originalmente enviados via correio ($ this-> dados) para o componente de paginação, então minha consulta personalizada iria continuar a usá-los.
Aqui está o que eu fiz:
no meu ponto de vista eu coloquei
$paginator->options(array('url'=>$this->data['Transaction']));
antes do $ paginator-> prev ( '<< Anterior' coisas.
Fazendo isso fez o próximo elo na paginator como " ... / página: 1 / start_date: 2000-01-01% 2000: 00: 00 / end_date: 3000-01-01% 2023: 59: 59 / payments_recieved: 1"
Em seguida, no meu controlador eu só tinha de obter os parâmetros e colocá-los no $ this-> dados para que a minha função iria continuar como de costume:
foreach($this->params['named'] as $k=>$v)
{
/*
* set data as is normally expected
*/
$this->data['Transaction'][$k] = $v;
}
E é isso. Paginação obras com minha consulta personalizada. :)
As opções aqui são uma boa vantagem ... Você também pode verificar para mais informações sobre cakePHP paginação em cakephp.org/view/166/Pagination-in-Views
Com que param 'url' você só pode colocar sua seqüência de preferência antes da paginação corda na url ..
Se eu usar esse tecnique:
$urlpagin = '?my_get1=1&my_get2=2';
$paginator->options = array('url'=>$urlpagin);
Eu só obter:
url/controller/action/?my_get1=1&my_get2=2/sort:.../...
e bolo perdi meu get params
Você já um tecnique alternativa?