У меня есть форма поиска на каждой из моих страниц. Если я использую хелпер формы, он по умолчанию $_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 является закладок и не означает, что что-то меняется на стороне сервера.