Во-первых, по умолчанию для отправки форм используется POST
по уважительной причине.Но я предполагаю, что вы хотите, чтобы пользователи могли добавлять в закладки эти поиски, поэтому вы хотите использовать GET
.
Все, что нужно, это установить «метод» формы.(Примечание: я использую быстрый способ определения массива. ['method'=>'get']
- это то же самое, что и array('method'=>'get')
, но с меньшим набором текста.)
echo form_open('admincp/search', ['method'=>'get']);
Когда форма отправлена, Admincp::search()
будетвызван, но он будет использовать строку запроса, а не красивый формат URL CodeIgniter.Другими словами, вместо admincp/search/abc
это будет controller/method?search=abc
.Но это будет отличная закладка.
Если у вас должен быть URL admincp/search/abc
, вам придется использовать JavaScript, как показали другие ответы.
Остальная часть формы HTML может бытьнемного чище тоже.Вы делаете больше работы, чем нужно.
echo form_input('search'); // name of the input
// No field name is provided to `form_submit()` so
// it won't be part of the query string.
echo form_submit('', 'Submit');
echo form_close();
Обратите внимание, что закрывающий тег php (?>
) был удален.НЕ ИСПОЛЬЗУЙТЕ закрывающие теги PHP в конце файла .php !!!
Для обработки данных из отправки определите в контроллере Admincp
следующую функцию.
public function search()
{
//get value from "search" field of form
$search = $this->input->get('search');
// code that uses search criteria
// and then displays search results
}
Значение строки запроса фиксируется с помощью библиотеки input
.В частности, с помощью метода get()
.Читайте о классе ввода ЗДЕСЬ .