Простой поиск: передача переменной формы в URI с помощью CodeIgniter

У меня есть форма поиска на каждой из моих страниц. Если я использую хелпер формы, он по умолчанию $_POST . Я бы хотел, чтобы поисковый запрос отображался в URI:

 http://example.com/search/KEYWORD 

Я был в Google около часа, но безрезультатно. Я только нашел статьи о том, как $_GET в основном отключен из-за родного соглашения URI. Я не могу быть первым, кто захочет такую ​​функциональность, не так ли? Заранее спасибо!

Лучше исправить ситуацию, если вы имеете дело с людьми без JS.

Посмотреть:

 <?php echo form_open('ad/pre_search');?> <input type="text" name="keyword" /> </form> 

контроллер

 <?php function pre_search() { redirect('ad/search/.'$this->input->post('keyword')); } function search() { // do stuff; } ?> 

Я использовал это много раз раньше.

Насколько я знаю, нет способа выполнить это с помощью простого POST. Однако вы можете получить доступ к форме через Javascript и обновить пункт назначения. Например:

 <form id="myform" onsubmit="return changeurl();" method="POST"> <input id="keyword"> </form> <script> function changeurl() { var form = document.getElementById("myform"); var keyword = document.getElementById("keyword"); form.action = "http://mysite.com/search/"+escape(keyword.value); return true; } </script> 

Ознакомьтесь с этим сообщением о том, как включить строки запроса GET вместе с сегментированными URL-адресами.

http://codeigniter.com/forums/viewthread/56389/#277621

После включения вы можете использовать следующий метод для извлечения дополнительных переменных.

 // url = http://example.com/search/?q=text $this->input->get('q'); 

Это лучше, потому что вам не нужно изменять настройку конфигурации allowed_uri_chars. Вы можете получить сообщение об ошибке «URI, который вы отправили, отклонили символы», если вы просто поместите что-либо, что пользователь вводит в URI.

Вот лучшее решение:

 $uri = $_SERVER['REQUEST_URI']; $pieces = explode("/", $uri); $uri_3 = $pieces[3]; 

Спасибо всем !

Я не очень разбираюсь в CodeIgniter, но это PHP, поэтому вам не нужно $_GET ? Вы можете отформатировать свой URL так же, как это делает Google: mysite.com/search?q=KEYWORD и вывести данные с помощью $_GET['q'] .

Кроме того, форма поиска кажется плохим местом для использования POST; GET является закладок и не означает, что что-то меняется на стороне сервера.