使用Codeigniter将表单输入中的字符串添加到URL

时间:2011-05-10 05:56:48

标签: php mysql forms 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-&gt; input-&gt; post('term')提供给控制器,然后传递给模型以查询数据库。现在,在搜索术语中出现并提交表单之后,我希望网址以搜索词结尾,即。 places / search / sort_by / id / sort_order / desc / term / dinosaur如果'dinosaur'是搜索词。我怎么能这样做?

现在上面的代码将POST传递给控制器​​,但提交表单后的url只是places / search / sort_by / id / sort_order / desc / term /。然后,如果用户搜索另一个术语“猫”,则在提交网址后,当搜索字词实际为“猫”时,会提交地点/ search / sort_by / id / sort_order / desc / term / dinosaur。

我该如何解决这个问题?

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

  1. 网址是places / search / sort_by / id / sort_order / desc / term /,搜索框为空
  2. '恐龙'在搜索框中输入,然后按提交
  3. 网址现在是places / search / sort_by / id / sort_order / desc / term / dinosaur,搜索框中包含'dinosaur'
  4. '猫'被输入搜索框,然后按提交
  5. 网址现在是places / search / sort_by / id / sort_order / desc / term / cats,搜索框中包含'cats'
  6. 这是我使用上述代码获得的内容

    1. 网址是places / search / sort_by / id / sort_order / desc / term /,搜索框为空
    2. '恐龙'在搜索框中输入,然后按提交
    3. 网址现在是/ search / sort_by / id / sort_order / desc / term /,搜索框中包含'dinosaur'

    4. '猫'被输入搜索框,然后按提交

    5. 网址现在是/ search / sort_by / id / sort_order / desc / term / dinosaur,搜索框中包含'cats'

1 个答案:

答案 0 :(得分:4)

试试这个......

<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

}