CodeIgniter кодирует строку через сегмент URI? - PullRequest
0 голосов
/ 18 июня 2011

Я новичок в codeigniter, добавляю функцию поиска на сайт и у меня есть два вопроса.

  1. Как отправить форму, чтобы она отправлялась в виде сегментов uri (например, строки запроса)? Я сделал это раньше, отправив с постом, и перенаправив на него URL в сегментах URI. Но есть ли лучший способ?
  2. Как бы я отправил строку (например, поисковый запрос, полностью сгенерированный пользователем) через сегмент URI? Я попробовал urlencode, но все еще были символы, которые не были разрешены. Я хочу сохранить большую часть того, что представляет собой запрос (чтобы его можно было легко найти в, скажем, истории, поэтому нет base64_encode). Мысли? Есть ли встроенная функция для этого или что-то?

Спасибо за любую помощь, Max

Ответы [ 3 ]

3 голосов
/ 18 июня 2011

Для формирования URL вы должны использовать JavaScript, например:

<form onsubmit="window.location.href='/search/'+encodeURIComponent(document.getElementById('search_query').value);return false">
    <input id="search_query" type="text" />
    <input type="submit" />
</form>

РЕДАКТИРОВАТЬ: Приведенный выше ответ не будет работать из-за фильтра URI CodeIgniter. Однако, исходя из моего опыта работы с версией 1.7, если вы передаете более одного параметра GET, вы можете получить их, используя массив $ _REQUEST. Это вообще обойдет фильтр URI. Так что сделайте это:

<form action="/search">
    <input name="x" type="hidden" />
    <input name="q" type="text" />
    <input type="submit" />
</form>

Затем используйте $ _REQUEST ['q'], чтобы получить поисковый запрос. Надеюсь, это сработает для вас.

0 голосов
/ 18 июня 2011

если вам нужно использовать что-то вроде

index.php?c=search&m=search&q=wow

вместо сегментов URI по умолчанию CI

, вам нужно включить строки запроса.Вы можете сделать это, изменив некоторую конфигурацию в

 application/config.php

find

$config['enable_query_strings'] = FALSE;

и изменив ее на

$config['enable_query_strings'] = TRUE;

Тогда вы сможете использовать строки запроса.

но спорные люди предпочитают не использовать строки запроса, я не уверен почему.

0 голосов
/ 18 июня 2011
  1. Да.Создайте форму, используя method="get".
  2. Если вы настроите форму, как указано выше, вам не придется беспокоиться о кодировании запросов.

Пример:

<form action="example.php" method="get">
  <input type="text" name="search" />
  <input type="submit" value="Search" />
</form>

Обновление : для генерации формы способом «CodeIgniter»:

echo form_open('email/send', array('method' => 'get'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...