Простой поиск: передача переменной формы в URI с помощью CodeIgniter - PullRequest
3 голосов
/ 23 октября 2008

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

http://example.com/search/KEYWORD

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

Ответы [ 5 ]

5 голосов
/ 26 ноября 2008

Есть лучшее решение, если вы имеете дело с людьми без 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;
    }
?>

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

4 голосов
/ 23 октября 2008

Насколько я знаю, нет способа сделать это с помощью простого 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>
0 голосов
/ 09 августа 2010

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

$uri = $_SERVER['REQUEST_URI'];

$pieces = explode("/", $uri);

$uri_3 = $pieces[3];

Спасибо erunways !

0 голосов
/ 28 октября 2008

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

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

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

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

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

0 голосов
/ 23 октября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...