Codeigniter:将表单变量传递给URI

luc*_*axi 2 codeigniter

不确定是否可以这样做,但似乎我的主要问题是因为我有一个名为"index"的方法的默认路由.我希望能够列出标记有特定关键字的所有用户.此外,用户可以根据这些关键字搜索其他用户.

即www.domain.com/tags/apples www.domain.com/tags/oranges www.domain.com/tags/blueberry

如果我手动转到URL,它工作正常.我在使用表单字段时遇到问题.

form_open的片段:

<?=form_open('tags/');?>

<p>Search for Tag: <input type="text" name="tag" /></p>    
<p><input type="submit" value="Search" /></p> 
Run Code Online (Sandbox Code Playgroud)

这是我的控制器片段:

function index() {
    $data['result'] = $this->tags_model->searchByTag($this->uri->segment(2));
    $this->load->view('tags_view', $data);
} 
Run Code Online (Sandbox Code Playgroud)

这是我的路由器片段:

$route['tags'] = "tags/index";
$route['tags/(:any)'] = "tags/index/$1"; 
Run Code Online (Sandbox Code Playgroud)

现在,如果我有一个名为search的方法,我可以很容易地修复所有这些,但我不希望URL显示为www.domain.com/tags/search/orange.

joh*_*Art 5

当您创建表单时,将其设置为使用POST变量而不是GET,这样它们不会通过url,这是codeigniter的表单的默认方法.

所以你的form_open代码将生成以下代码:

 <form method="post" action="tags/" />
Run Code Online (Sandbox Code Playgroud)

如果你希望他们通过url,请以这种方式调用表单开头:

form_open('tags/', array('method' => 'get'));
Run Code Online (Sandbox Code Playgroud)

这同样适用于您要为表单指定的任何其他属性,只需遵循attribute_name => attribute_value数组中的相同模式即可.

有关用户指南的更多信息