как отправить из данных, используя метод get в codeigniter - PullRequest
0 голосов
/ 12 июня 2018

представление поиска -> admincp - контроллер, а поиск - метод.

 <?php
 echo form_open('admincp/search');
 $data = array('name' => 'search', );
 echo form_input($data);
 $data4 = array( 'name' => 'submit',);
  echo form_submit($data4);
  echo  form_close(); ?>

предположим, что я ищу abc, тогда я хочу, чтобы он отправил мне этот URL admincp/search/abc

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

Итак, общая идея такова:

  1. Поймать отправку формы с помощью события onsubmit, узнать больше
  2. Теперь выведите значение, предоставленное пользователемв вашей функции события
  3. Используйте функцию Codeigniter base_url для создания URL-адреса GET с добавленным к нему поисковым запросом См. о base_url ()
  4. Теперь перенаправьте окно пользователя наэтот конкретный URL-адрес, используя Window.location, см. подробнее

Пример кода приведен ниже, вам может понадобиться немного его настроить:

<?php
$attributes = array('onsubmit' => 'return makeGET(this);');
echo form_open('admincp/search', $attributes);
$data = array('name' => 'search', 'id' => 'query');
echo form_input($data);
$data4 = array( 'name' => 'submit',);
echo form_submit($data4);
echo  form_close();


<script>
var makeGET = function(e){
    e.preventDefault();
    var query = document.getElementById('query');
    var url = "<?php echo base_url('admincp/search/');" + query;
    window.location = url;
}
</script>
?>
0 голосов
/ 12 июня 2018

Во-первых, по умолчанию для отправки форм используется 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().Читайте о классе ввода ЗДЕСЬ .

0 голосов
/ 12 июня 2018

Ну, вы можете добавить событие jquery.

  • При отправке формы
  • Получить значение текстового поля
  • установить новый URL и добавить искомое значение
  • Что-то вроде url/search/abc
  • и перенаправить на этот новый URL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...