Использование нумерации страниц со строкой запроса для формы поиска, для которой установлен метод get в codeigniter - PullRequest
8 голосов
/ 21 мая 2011

Я стучу головой по клавиатуре, пытаясь найти способ использовать строку запроса с нумерацией страниц, все работает нормально, пока не появится ссылка FIRST.

Все остальные ссылки имеют добавленную к их концу строку запроса, кроме ссылки на страницу First misses the query string

Ссылки на другие страницы:

http://localhost/index.php/search/index/9?q=some_Data_From_Form

Ссылка ПЕРВАЯ страница показывает ссылку, которую я установил в $config['base_url'] переменная:

http://localhost/index.php/search/index/

Форма поиска:

$attributes=array('id'=>'search','class'=>'clearfix','method'=>'get');
echo form_open(base_url().'index.php/search/index',$attributes);

Имеется текстовое поле с именем, установленным на q.

Я наткнулся на несколько ответов / примеров на stackoverflow, и вот что я написал:

Файл конфигурации разбивки на страницы имеет

$config['per_page'] = '1';
$config['uri_segment'] = '3';

и другие подобные num_tag_open и т. Д.

Контроллер класса:

class Search extends CI_Controller {
    public function Search(){
        parent::__construct();
        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->library('input');
        $this->load->model('blog_model');
        $this->load->library('pagination');
        $this->config->load('pagination'); //other pagination related config variables
    }

    public function index($page=0){
        $q = trim($this->input->get('q'));
        if(strlen($q)>0){
            //validate input and show data
            $config['enable_query_strings']=TRUE;
            $getData = array('q'=>$q);
            $config['base_url'] = 'http://localhost/index.php/search/index/';   
            $config['suffix'] = '?'.http_build_query($getData,'',"&");

            $data['rows'] = $this->blog_model->getBySearch($q,$this->config->item('per_page'),$page);
            if(empty($data['rows'])){
                //no results found              

            }else{
                //match found
                $config['total_rows'] = $this->blog_model->getBySearchCount($q);
                $this->pagination->initialize($config); 
                $link->linkBar = $this->pagination->create_links();
                $this->load->view('myview',array($data,$link));
            }
        }else if(strlen($q)==0){
            //warn user for the missing query and show a searchbox

        }
    }
}

S.O.S! Ребята, помогите пожалуйста

1 Ответ

10 голосов
/ 22 мая 2011

Я не могу в это поверить, я часами искал в Интернете решение! Это было всегда со мной. Я должен был открыть библиотеку разбиения на страницы и просмотреть ее содержимое, прежде чем отправлять этот вопрос. Просто одна строка и проблема решена.
Я добавил следующую строку в метод индекса.
$config['first_url'] = '/index.php/search/index/?q='.$q;

...