Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite, pessoal.
Estou criando uma aplicação em Zend e estou com um problema nos links da página.
Estou usando o Zend_Paginator para fazer uma paginação com uma variável chamada page definida para armazenar o número da página.
O que acontece é que depois que eu clico em algum link de paginação, todos os outros links da minha página criam automaticamente uma variável chamada page no meio de sua estrutura por exemplo:
Digamos que tenho o link que direcione para
user/edit/id/3
Depois que eu clico em algum link da paginação, este link fica assim:
user/edit/page/id/3
A paginação funciona perfeitamente, mas acaba afetando os outros links que não tem nada a ver com a história, injetando neles a variável de controle da página atual.
Alguém já passou por isso?
>
Como esta o seu roteamento ???
:module/:controller/:action/*
Pois se for a rota acima o link gerado está correto, se não digite:
Zend_Debug::dump($this->getRequest()->getParams());
Que ele irá lhe mostrar em qual parametro ele carrego o page
Então, a questão é que não defini roteamento nenhum!
Sim, ele está usando o roteamento padrão. Tem alguns topicos abaixo que fala sobre como usar o Zend_Router.
Não é nada complicado, da uma olhada la se tiver duvida posta aqui.
Você cria os links que aparecem com o problema utilizando o view helper url, usando na view (ou layout) $this->url(array('controller' => 'nome-do-controller', 'action' => 'nome-do-action'))? Se não for, mostre como faz os links.
Carlos Eduardo
>
Você cria os links que aparecem com o problema utilizando o view helper url, usando na view (ou layout) $this->url(array('controller' => 'nome-do-controller', 'action' => 'nome-do-action'))? Se não for, mostre como faz os links.
Carlos Eduardo
Obrigado pela ajuda pessoal.
Eu estava criando o link não mão, sem utilizar helper, porque eu estou gerando o link dentro de uma biblioteca própria que criei para utilizar com o Zend, e eu não queria código do Zend dentro dela. Mas me vi forçado a gerar o link como você falou, Matias Rezende.
Antes eu estava gerando o link assim:
$url = $Component->getLink() . '/' . $Component->getField() . '/' . $buttonId->value;
Onde:
$Component->getLink() = action
$Component->getField() = chave
$buttonId->value = valor
Agora estou gerando assim:
$helper = new Zend_View_Helper_Url();
$url = $helper->url( array( 'controller'=>'user', 'action'=>$Component->getLink(), 'id'=>$buttonId->value ) );
A variável page continua sendo injetada na estrutura do link, a diferença é que agora ela possui um valor, por exemplo:
antes meu link ficava assim:
user/edit/page/id/3
Agora fica assim:
user/edit/page/2/id/3
E tudo funciona como o esperado.
Mais uma vez, muito obrigado pela ajuda.
Se quiser retirar a variável página dos outros links, é só usar assim:
$helper->url( array( 'controller'=>'user', 'action'=>$Component->getLink(), 'id'=>$buttonId->value ), 'default', true );
Onde default é o nome da rota utilizada para gerar o link. Como você não está utilizando nenhuma rota definida, então utilize a rota padrão.
Carlos Eduardo
>
Se quiser retirar a variável página dos outros links, é só usar assim:
$helper->url( array( 'controller'=>'user', 'action'=>$Component->getLink(), 'id'=>$buttonId->value ), 'default', true );
Onde default é o nome da rota utilizada para gerar o link. Como você não está utilizando nenhuma rota definida, então utilize a rota padrão.
Carlos Eduardo
Opa! Ótima dica.
Fiz o que você falou, Carlos Eduardo. Agora meus links estão limpos.
Obrigado.
Como esta o seu roteamento ???
:module/:controller/:action/*
Pois se for a rota acima o link gerado está correto, se não digite:
Que ele irá lhe mostrar em qual parametro ele carrego o page