Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

francowalley

[Resolvido] Passar parametros paginator

Recommended Posts

Tenho um formulario onde o usuario informa um intervalo de data e uma categoria, quando ele dá o submit, os dados sao carregados normalmente mas quando eu vou pular pra proxima página pra ver a continuação do filtro que ele fez, ele perde o filtro e esta trazendo todos os registros da tabela, como eu faço pra manter esse registros que foram filtrados na mudança de paginas...

 

 

script: "vou postar todo o script"

 

view

<div class="mediaRelatorios index">

 

<h2><?php __('Listagem de Mídias'); ?></h2>

 

<?php echo $this->Form->create('MediaRelatorio',array('type'=>'file','url'=>'/media_relatorios/'));?>

 

<fieldset>

<legend><?php __('Informe os parâmetros'); ?></legend>

<?php

echo $this->Form->input('datein', array(

'label' => 'Data inícial da publicação',

'type' => 'datetime',

'dateFormat' => 'DMY',

'timeFormat' => '24',

'minYear' => date('Y') - 1,

'maxYear' => date('Y') + 5

)

);

echo "<br>";

 

echo $this->Form->input('dateout', array(

'label' => 'Data final da publicação',

'type' => 'datetime',

'dateFormat' => 'DMY',

'timeFormat' => '24',

'minYear' => date('Y') - 1,

'maxYear' => date('Y') + 5,

'empty' => true

)

);

echo "<br>";

?>

<div class="input text">

<label for="MediaMediaRelatorioId">Categoria</label>

<?php

echo $this->Form->select('categoria_id',$categorias,NULL,array('empty'=>false));

?>

</div>

</fieldset>

 

<?php

echo $this->Form->end(__('Enviar', true));

 

if(count($mediaRelatorios)) { ?>

<table cellpadding="0" cellspacing="0">

<tr>

<th><?php echo $this->Paginator->sort('id'); ?></th>

<th><?php echo $this->Paginator->sort('Nome', 'title'); ?></th>

<th><?php echo $this->Paginator->sort('Duração', 'duration'); ?></th>

<th><?php echo $this->Paginator->sort('Data Inicial', 'datein'); ?></th>

<th><?php echo $this->Paginator->sort('Data Final', 'dateout'); ?></th>

<th class="actions"><?php __('Ações'); ?></th>

</tr>

<?php

$i = 0;

 

foreach ($mediaRelatorios as $mediaRelatorio):

$class = null;

if ($i++ % 2 == 0) {

$class = ' class="altrow"';

}

?>

<tr<?php echo $class; ?>>

<td><?php echo $mediaRelatorio['Media']['id']; ?> </td>

<td><?php echo $mediaRelatorio['Media']['title']; ?> </td>

<td><?php echo $mediaRelatorio['Media']['duration']; ?> </td>

<td><?php echo $mediaRelatorio['Media']['datein']; ?> </td>

<td><?php echo $mediaRelatorio['Media']['dateout']; ?> </td>

<td class="actions">

<?php echo $this->Html->link(__('Deletar', true), array('action' => 'delete', $media['Media']['id']), null, sprintf(__('Are you sure you want to delete # %s?', true), $media['Media']['id'])); ?>

</td>

</tr>

<?php

endforeach;

?>

</table>

 

<p>

<?php

echo $this->Paginator->counter(array(

'format' => __('Página %page% de %pages%, listando %current% de um total de %count%, iniciando no ítem %start% e finalizando em %end%', true)

));

?>

</p>

 

<div class="paging">

<?php echo $this->Paginator->prev('<< ' . __('anteriores', true), array(), null, array('class' => 'disabled')); ?>

|

<?php echo $this->Paginator->numbers(); ?>

|

<?php echo $this->Paginator->next(__('próximos', true) . ' >>', array(), null, array('class' => 'disabled')); ?>

</div>

<?php

}

?>

</div>

<div class="actions">

<h3><?php __('Menu'); ?></h3>

<ul>

<li><?php echo $this->Html->link(__('<-Voltar', true), array('controller' => 'Media', 'action' => 'index')); ?> </li>

</ul>

</div>

 

 

 

controller

<?php

class MediaRelatoriosController extends AppController {

var $name = 'MediaRelatorios';

var $uses = array('Media', 'MediaCategory');

 

// para abrir um programa sem ele ainda estar registrado no sistema.

function beforeFilter() {

$this->Auth->allow('*');

}

 

function index() {

// paginação

$this->MediaRelatorios->recursive = 0;

$this->set('mediaRelatorios', $this->paginate() );

 

// pegando os tipos de categorias para listar para o usuario selecionar

$categorias = $this->MediaCategory->find('list');

$this->set(compact('categorias')) ;

 

// se houve um post ou get e algum campo do filtro tiver sido preenchido ele entra

if (!empty($this->data)) {

 

// imprime o array

/*

echo "<pre>";

print_r($this->data);

die('</pre>Mandou o form');

*/

 

if ($this->data['MediaRelatorio']['dateout']['year'] == "") {

$this->data['MediaRelatorio']['dateout']['year'] = "$this->data['MediaRelatorio']['datein']['year']";

}

if ($this->data['MediaRelatorio']['dateout']['month'] == "") {

$this->data['MediaRelatorio']['dateout']['month'] = "$this->data['MediaRelatorio']['datein']['month']";

}

if ($this->data['MediaRelatorio']['dateout']['day'] == "") {

$this->data['MediaRelatorio']['dateout']['day'] = "$this->data['MediaRelatorio']['datein']['day']";

}

 

$this->set('mediaRelatorios', $this->paginate('Media',array('Media.media_category_id'=>$this->data['MediaRelatorio']['categoria_id'],

'Media.datein >=' => $this->data['MediaRelatorio']['datein']['year']."-".$this->data['MediaRelatorio']['datein']['month']."-".$this->data['MediaRelatorio']['datein']['day'],

'Media.dateout <=' => $this->data['MediaRelatorio']['dateout']['year']."-".$this->data['MediaRelatorio']['dateout']['month']."-".$this->data['MediaRelatorio']['dateout']['day']

)

)

);

}

}

 

function delete($id = null) {

if (!$id) {

$this->Session->setFlash(__('Invalid id for media', true));

$this->redirect(array('action' => 'index'));

}

if ($this->Media->delete($id)) {

$this->Session->setFlash(__('Media deleted', true));

$this->redirect(array('action' => 'index'));

}

$this->Session->setFlash(__('Media was not deleted', true));

$this->redirect(array('action' => 'index'));

}

 

 

}

 

 

Obrigado pela força... já tem 2 dias que estou parado nesse ponto e nao consigo achar uma solução....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Amigo

tudo bom?

tente isso na sua view de paginação:

 

$this->Paginator->options(array('url' => $this->passedArgs));

isso envia os argumentos da URL para o Paginator,

para mais detalhes acesse: http://book.cakephp.org/view/1233/Pagination-in-Views;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Amigo

tudo bom?

tente isso na sua view de paginação:

 

$this->Paginator->options(array('url' => $this->passedArgs));

isso envia os argumentos da URL para o Paginator,

para mais detalhes acesse: http://book.cakephp.org/view/1233/Pagination-in-Views;

 

 

Tudo bem Eduiagami! cara, muito obrigado pela dica e pela ajuda, já estou fundindo as bielas de tanto ralar na mesma coisa, é chato né... parece que a coisa nao anda..... mas de boa, ralando e aprendendo, fazer o que..... mas ainda nao consegui resolver, tentei com essa dica que você deu e depois entrei no 'book', vi as formas que estavam lá, tentei mas tambem nao foi, ele faz o seguinte, qdo eu clico na pagina '2', e a pagina abre, é como se eu tivesse dando um find em toda a tabela, e ele vai pra pagina 2 mostrando a sequencia de dados que tem gravado na tabela, e nao o filtro que eu acabei de selecionar e que esta carregada na tela, inclusive, esse filtro que estou fazendo só tem 2 paginas, e ele aparece somente 2 paginas nos numeros que ele gera no fim do formulario, mas qdo eu clico pra ir pra segunda, ele ja´ mostra 'n' paginas e cai na sequencia de dados do bd e perde o filtro selecionado.

Bom, se você souber alguma outra coisa que eu possa tentar....... valeu.....

 

Olá Amigo

tudo bom?

tente isso na sua view de paginação:

 

$this->Paginator->options(array('url' => $this->passedArgs));

isso envia os argumentos da URL para o Paginator,

para mais detalhes acesse: http://book.cakephp.org/view/1233/Pagination-in-Views;

 

 

 

Meu amigo Eduiagami, resolvi rever o que você tinha me passado, e nada como uma boa noite de sono, hoje as coisas se clariaram, realmente você esta certo, é esse metodo mesmo que você me passou, só que eu estou usando o:

 

$paginator->options(array('url'=>array_merge(array('lang'=>$lang),$this->passedArgs)));

 

, pois passo uns parametros na url, mas era isso mesmo, valeu pela dica....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.