使用代码点火器将字符串从表单输入添加到 URL


Add string from form input to URL using Codeigniter

>我有一个包含搜索框的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 以搜索词结尾,即。places/search/sort_by/id/sort_order/desc/term/dinosaur 如果"恐龙"是搜索词。我该怎么做?

现在上面的代码将 POST 传递给控制器,但提交表单后的 url 只是 places/search/sort_by/id/sort_order/desc/term/。然后,如果用户搜索另一个术语说"猫",提交后网址变为 places/search/sort_by/id/sort_order/desc/term/dinosaur,而搜索词实际上是"猫"。

我该如何解决这个问题?

换句话说,这就是我想要的行为

  1. URL 为地点/搜索/sort_by/id/sort_order/desc/term/且搜索框为空
  2. 在搜索框中输入"恐龙",然后按提交
  3. URL现在是places/search/sort_by/id/sort_order/desc/term/dinosaur,搜索框包含"恐龙"
  4. 在搜索框中输入"猫",然后按提交
  5. 网址现在是 places/search/sort_by/id/sort_order/desc/term/cats,搜索框包含"cats"

这就是我通过上述代码得到的

  1. URL 为地点/搜索/sort_by/id/sort_order/desc/term/且搜索框为空
  2. 在搜索框中输入"恐龙",然后按提交
  3. URL 现在是 places/search/sort_by/id/sort_order/desc/term/和搜索框包含"恐龙"

  4. 在搜索框中输入"猫",然后按提交

  5. 网址现在是 places/search/sort_by/id/sort_order/desc/term/dinosaur,搜索框包含"猫"

试试这个...

<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
}