2012-05-08 2 views
2

Im пытается вывести на экран результаты, возвращаемые DB. Но когда я пытаюсь получить смещение от URI:Pagnation с данными GET в uri - Codeigniter

questions/search?content=foobar/4

/4 должно быть смещение, но оно присваивается значение $_GET.

Это весь метод в контроллере:

http://pastebin.com/QFJddMDJ

$results = $this->question->search_results_count($content); 
$this->load->library('pagination'); 
$config['total_rows'] = count($results); 
$offset = $this->uri->segment(3); 
if ($offset == false) $offset = 0; 
$config['full_tag_open'] = '<ul class="pages">'; 
$config['full_tag_close'] = '</ul>'; 
$config['num_tag_open'] = '<li>'; 
$config['num_tag_close'] = '</li>'; 
$config['cur_tag_open'] = '<li><a class="active">'; 
$config['cur_tag_close'] = '</a></li>'; 
$config['prev_tag_open'] = '<li class="prev">'; 
$config['prev_tag_close'] = '<li>'; 
$config['next_tag_open'] = '<li class="next">'; 
$config['next_tag_close'] = '</li>'; 
$config['num_tag_open'] = '<li>'; 
$config['num_tag_close'] = '</li>'; 
$config['first_link'] = '<<'; 
$config['first_tag_open'] = '<li>'; 
$config['first_tag_close'] = '</li>'; 
$config['last_link'] = '>>'; 
$config['last_tag_open'] = '<li>'; 
$config['last_tag_close'] = '</li>'; 
$config['per_page'] = 1; 
$config['uri_segment'] = 2; 
$config['page_query_string'] = TRUE; 
$config['use_page_numbers'] = TRUE; 
$config['suffix'] = '?content='.$content; 
$config['base_url'] = base_url().'questions/search/'; 
$this->pagination->initialize($config); 
+0

Строка запроса должна быть последней вещью в вашем URL. Что-то вроде/search/4? Content = foo работает? –

+0

Как установить base_url в конфиге? –

+0

Просмотрите файл config/config.php и запись, в которой указано $ config ['base_url] = xxxxxx; –

ответ

12

Я уверен, что вы знаете, идентификаторы URI не работают, как это. Строка запроса должна быть в конце (или до фрагмента хеша #). Эта строка запроса:

questions/search?content=foobar/4 

Средства $_GET['content'] = 'foobar/4';

Вам нужно изменить URL-адреса для разбивки на что-то вроде этого:

questions/search/4/?content=foobar 

/ после 4 есть также опция.

Вы должны удалить строку запроса из постраничной-х $config['base_url'] и вместо того, чтобы добавить его к ссылкам в представлении, которое, к сожалению, включает в себя взлом класс постраничной ...

Или попробуйте эту нелегальную особенность:

// After loading the pagination class 
$this->pagination->suffix = '{YOUR QUERY STRING}'; 

Или еще лучше, просто добавьте $config['suffix'] = '{YOUR QUERY STRING}'; в конфигурацию перед загрузкой класса. Это должно автоматически добавить строку запроса к каждой ссылке href.

Некоторые корректировки в вашей области конфигурации необходимы также:

// Make sure to encode these 
// $config['first_link'] = '<<'; 
$config['first_link'] = '&lt;&lt;'; 
// $config['last_link'] = '>>'; 
$config['last_link'] = '&gt;&gt;'; 

$offset = $this->uri->segment(3); 
// Default URI segment is 3, and it's what you use above. Remove this. 
// $config['uri_segment'] = 2; 

// This should be FALSE (default). Remove it. 
// $config['page_query_string'] = TRUE; 

// This should be FALSE (default) if you're 
// using the URI segment as your OFFSET. Remove it. 
// $config['use_page_numbers'] = TRUE; 

// Add your query string 
$config['suffix'] = '?content='.$content; 
$config['base_url'] = base_url().'questions/search/'; 
$this->pagination->initialize($config); 
+1

Что-то вроде '? Content = foobar'. Независимо от того, что вы хотите отобразить в href после номера страницы. –

+0

Я сделал что-то вроде этого: '$ config ['suffix'] = '? Content ='. $ Content;' Но когда я create_links(), вывод пустой строки. –

+1

Вы помните «эхо»? ... Измените свой вопрос и добавьте свой полный код в свой пост, и я посмотрю на него. –

Смежные вопросы