CodeIgniter - сохранить введенное значение после нажатия на пагинацию - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть input type = "date", что позволяет пользователю выбрать диапазон дат для запуска запроса и отображения в таблице.Но, однако, когда я нажимаю Page 2 на нумерации страниц, значение даты теряется, и запрос не выполняет поиск по выбранным датам.Как я должен сделать, чтобы сохранить значение для запроса для запуска WHERE предложение.

Мой контроллер:

public function searchDate()
{   

   $this->load->library('session');
     if ($this->input->post('search')) { 
     $this->session->set_userdata('search' , $this->input->post('search'));
   }
   $orders=new ReportModel;

   $config["base_url"] = base_url() . "/Report/searchDate";
   $config["total_rows"] = $orders->record_count_search();
   $config["per_page"] = 150;
   $config["uri_segment"] = 3;
   $config["num_links"] = 10;
   $config['use_page_numbers'] = TRUE;
   $config['reuse_query_string'] = TRUE;

   $this->pagination->initialize($config);
   $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;

   $data['data']=$orders->get_orders_search($config["per_page"], $page);
   $data["links"] = $this->pagination->create_links();

   $this->load->view('includes/header');
   $this->load->view('estoreReport/list',$data);
   $this->load->view('includes/footer');
}

Мой вид:

<form class="form-inline" role="search" action="<?php echo base_url('estoreReport/searchDate')?>" method = "post">
            <div class="form-group">

              <input type="date" class="form-control" placeholder="Order Date From" name = "searchDateFrom" value="<?php echo set_value('searchDateFrom') ?>" >
              <input type="date" class="form-control" placeholder="Order Date To" name = "searchDateTo" max="<?php echo date('Y-m-d'); ?>"  value="<?php echo set_value('searchDateTo') ?>" >                    
            </div>
            <button class="btn btn-default " type="submit" value = "search"><i class="glyphicon glyphicon-search"></i>
        </form>

Я пытался использовать session в своем контроллере, но, похоже, он не работает.

$this->load->library('session');
 if ($this->input->post('search')) { 
 $this->session->set_userdata('search' , $this->input->post('search'));

}

Пожалуйста, помогите, спасибо.Я очень новый ученик КИ.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Просто используйте GET вместо POST, чтобы в вашей ссылке на страницы было указано значение даты поиска. В вашем представлении просто измените ваш метод на GET

method = "get"

В вашей модели, где вы получаете значение ввода, также измените метод на GET.

0 голосов
/ 18 сентября 2018

Вы можете использовать cookie для своей задачи. Официальные документы cookie codeigniter

Чтобы установить cookie, используйте:

$cookie=  ['name'   => 'date',
           'value'  => $dateValue,                            
           'expire' => '1000',                                                                                   
           'secure' => TRUE];
$this->input->set_cookie($cookie);

Чтобы получить cookie, используйте:

$this->input->cookie('date',true);

И чтобы удалить cookie, используйте:

delete_cookie('date');

Или лучше использовать запрос на получение и отправить дату в качестве параметра.

...