URL de paginação de codeigniter com parâmetros de obtenção

Estou tendo problemas para configurar paginação no codeigner quando eu passar parâmetros no URL

se minha url for assim: search/?type=groups

Qual deve ser o meu $config['base_url'] para que a paginação funcione?

se eu definir a url base para search/?type=groups o URL resultante é search/?type=groups/10

o que significa $_GET['type']=groups/10

obrigado

Na configuração de paginação:

 if (count($_GET) > 0) $config['suffix'] = '?' . http_build_query($_GET, '', "&"); 

Os seus atuais $_GET vars serão exibidos em links de paginação. Você pode replace $_GET por outra matriz associativa. Isso não adicionará uma string de consulta a menos que uma já exista.

Atualização: acabei de ver, se você voltar de outro número de paginação para clicar no primeiro (1), a CI não se importa mais com sua configuração de sufixo.

Para corrigir isso use $config['first_url'] .

por exemplo: $config['first_url'] = $config['base_url'].'?'.http_build_query($_GET);

A resposta mais atualizada desta questão é;

Você deve habilitar a reutilização da seqüência de consulta habilitando esta configuração:

 $config['reuse_query_string'] = true; 

Depois disso, você deve inicializar a paginação:

 $this->pagination->initialize($config); 

Adicionado $config['reuse_query_string'] para permitir o repovoamento automático de argumentos de cadeia de consulta, combinados com segmentos URI normais. – CodeIgniter 3.0.0 Change Log

se você estiver usando o codeigniter 2, há uma opção em config.php , $config['allow_get_array'] – certifique-se de que é TRUE.

Em seguida, defina a opção de paginação $config['page_query_string'] como TRUE .

E, finalmente, no seu caso, configure $config['base_url'] para "search/?type=groups" , a paginação irá append a seqüência de consulta per_page após ela.

Deve funcionar assim, você receberá o deslocamento em $this->input->get("per_page") .

código forte!

Aqui está a minha solução jquery:

Apenas envolva links de paginação em um div como este:

 $config['full_tag_open'] = ''; 

do que adicionar o seguinte código jquery:

 $("#pagination > a").each(function() { var g = window.location.href.slice(window.location.href.indexOf('?')); var href = $(this).attr('href'); $(this).attr('href', href+g); }); 

Funciona bem para mim.

Eu lutei com o mesmo problema hoje. Minha solução é esta:

  1. Gerar os links de paginação e armazená-los em uma string ( $pagination = $this->pagination->create_links(); )

  2. Use regexp para encontrar todos os links e adicionar strings de consulta

O código de expressão normal usado é:

 < ?php $query = '?myvar=myvalue'; $regexp = "]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)< \/a>"; $unique = array(); if( preg_match_all("/$regexp/siU", $pagination, $matches) ) { foreach ( $matches[2] as $link ) { if ( !isset($unique[$link]) ) { $data['pagination'] = str_replace($link . '"', $link . $query . '"', $data['pagination']); $unique[$link] = ''; } } } unset($unique); 

Funciona como um encanto para mim! O que faz é:

  1. Encontre todos os links
  2. Substitua links exclusivos (uma vez que existe um link anterior / próximo, o mesmo link pode aparecer mais de uma vez) com o link original e a cadeia de consulta.

Em seguida, atribua a variável ao modelo que será exibida e use print $ your_pagination_variable_name; para mostrar os links com suas strings de consulta anexadas!

A solução é que CodeIgniter não funciona assim. O que eu preciso é um método (no controlador) para cada uma das opções em “tipo”, então uma opção seria um método chamado: grupos, outro chamado de inputs etc etc, cada método se refere a uma class ou método de modelo diferente conforme necessário.

Estou tentando entender melhor OOP e CI … um pouco de ajuste para fazer … sinta-se livre para comentar e corrigir-me se estou errado. obrigado

Usar o $ config [‘sufixo’] é a melhor forma de IMO para implementar isso porque não requer qualquer processamento extra como a solução regex. $ config [‘suffix’] é usado na renderização das urls na function create_links que faz parte do arquivo system / libraries / Pagination.php, então, se você definir o valor que será usado na geração das URLs e ganhou não exige mais processamento, o que significa que será mais rápido.

Obrigado pela postagem, isso me salvou toneladas de codificação extra, não necessária!

Eu acho que você está tentando fazer o mesmo que eu estava tentando fazer e eu consegui funcionar corretamente ao não definir uma URL de base e apenas usar essa configuração impediu-me de editar manualmente a biblioteca

 $this->load->library('pagination'); $config['use_page_numbers'] = TRUE; $config['page_query_string'] = TRUE; $config['total_rows'] = 200; $config['per_page'] = 20; $this->pagination->initialize($config); 

Antes da linha:

 $this->base_url = rtrim($this->base_url).'&'.$this->query_string_segment.'='; 

Substitua este código abaixo:

 if(isset($_GET[$this->query_string_segment])) { unset($_GET[$this->query_string_segment]); } $uri = http_build_query($_GET); $uri = empty($uri) ? '?' : $uri . '&'; $this->base_url = rtrim($this->base_url).$uri.$this->query_string_segment.'='; 

Basta ver este link .
Basta atualizar a class de paginação modificada e, em seguida, adicionar

 $config['get'] = "?string=" . $_REQUEST['string']."&searchBy=" . $_REQUEST['searchBy']; 

Eu tenho o mesmo problema. Minha solução é modificar a Paginação e colocá-la em aplicativos / bibliotecas. Primeiro eu crio

 var $get=''; 

e encontre todos os elementos “a” e adicione $ get no href="........'.$this->get.'"'>.......

Agora, no controlador ou na input do modelo, esta linha

 $config['get']=(isset($_GET['search']))?'?search='.$_GET['search']:''; 

É isso aí! Espero que isso ajude você.

NO SEU CONTROLADOR:

$ config [‘anchor_class’] = “class =” link-pagination ‘”;

NA SUA VISTA:

 $(".link-pagination").each(function() { $(this).attr("href", $(this).attr('href') + "?id=< ?= $this->input->get('id') ?>"); }); 

Tive o mesmo problema, mas percebi que as versões mais recentes do CI possuem um sufixo definido na class de paginação. Embora ainda não esteja na documentação. Não é necessário cortá-lo.

Eu encontrei com um tipo de problema semelhante, e com base na resposta acima, aqui é o que eu tenho que fazer para personalização de acordo com minhas necessidades.

Meu URI deveria ser algo assim:

 base_url() . /search/?term= 

Então, aqui está o que eu fiz:

 $config['base_url'] = base_url ."/search/?term=" . $_GET['term'] 

Espero que você encontre a resposta nesta página: LINK . Edite sua resposta de volta se você puder.