Добавить строку из формы ввода в URL, используя Codeigniter - PullRequest
2 голосов
/ 10 мая 2011

У меня есть div, содержащий окно поиска:

<div id="searchbox">
    <?php echo form_open('places/search/sort_by/id/sort_order/desc/term/'.$this->input->post('term')); ?>
        <?php echo form_label('Search for', 'term'); ?>
        <?php echo form_input('term', set_value('term'), 'id="term"'); ?>
        <?php echo form_submit('submit', 'Search'); ?>
    <?php echo form_close(); ?>
</div>

В поле ввода пользователь может ввести поисковый термин, который будет передан контроллеру с помощью $ this-> input-> post ('term'), который затем передается модели для запроса базы данных. Теперь, после ввода поискового запроса и отправки формы, я хочу, чтобы URL заканчивался поисковым запросом, т.е. place / search / sort_by / id / sort_order / desc / term / dinosaur, если «динозавр» был поисковым термином. Как я могу это сделать?

Прямо сейчас приведенный выше код передает POST контроллеру, но URL-адрес сразу после отправки формы просто помещает / search / sort_by / id / sort_order / desc / term /. Затем, если пользователь ищет другой термин, например, «кошки», после отправки URL-адреса становится местами / search / sort_by / id / sort_order / desc / term / dinosaur, когда поисковым термином на самом деле является «кошка».

Как я могу решить это?

Другими словами, это поведение, которое я хочу

  1. URL - это места / search / sort_by / id / sort_order / desc / term /, а поле поиска пусто
  2. В поле поиска введите «Динозавр» и нажмите «Отправить»
  3. URL-адрес теперь размещается / search / sort_by / id / sort_order / desc / term / dinosaur, а в поле поиска содержится «динозавр»
  4. В поле поиска введите «кошки» и нажмите «Отправить»
  5. URL теперь размещен / search / sort_by / id / sort_order / desc / term / cats, а в поле поиска содержится 'cats'

Это то, что я получаю с кодом выше

  1. URL - это места / search / sort_by / id / sort_order / desc / term /, а поле поиска пусто
  2. В поле поиска введите «Динозавр» и нажмите «Отправить»
  3. URL теперь размещен / search / sort_by / id / sort_order / desc / term /, а поле поиска содержит «динозавр»

  4. в поле поиска введите 'cats' и нажмите отправить

  5. URL-адрес теперь находится в / search / sort_by / id / sort_order / desc / term / dinosaur, а поле поиска содержит 'cats'

1 Ответ

4 голосов
/ 10 мая 2011

Попробуйте это ...

<div id="searchbox">
    <?php echo form_open('places/search/sort_by/id/sort_order/desc/term/'); ?>
        <?php echo form_label('Search for', 'term'); ?>
        <?php echo form_input('term', set_value('term', $term), 'id="term"'); ?>
        <?php echo form_submit('submit', 'Search'); ?>
    <?php echo form_close(); ?>
</div>

Затем в контроллере, который принимает его ...

                      // Note the default NULL value for the last uri segment
                     //                                                   |
                    //                                                    v
function search($sort_by, $id, $sort_order, $desc, $term, $search_term = NULL)
{
     // if $search_term is null redirect on itself concating the "post" data 
    // on the end of the uri
    if ($search_term === NULL) 
    { 
        redirect('the/same/uri/plus/the/term/'.$this->input->post('term'));
    }

    // load up this variable to fill the input
    $data['term'] = $search_term;

    //then do whatever

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