我有一个html表单,例如他的行为是“exmaple.com/mail.php?name=dan
”。
如何将此参数传递给Codeigniter的控制器?
codeigniter中的'action'将转至 - example.com/mail
,我不能exmaple.com/mail?name=dan
,对吗?那我该怎么办? (并且......我不能使用Ajax: - ))
答案 0 :(得分:2)
有几种解决方案。你可以这样做$name=$this->input->get("name")
,但是如果你想保留Codeigniter的哲学,你可以使用Javascript将表单的动作URL更改为/ mail / dan。在这种情况下,您可以使用以下代码访问数据:$name=$this->uri->segment($number)
。你的情况下的$ number是2,因为“dan”在第二个URI的段中。
注意:如果您使用第二个方法,请记住,codeigniter的默认行为是从URI的第一个和第二个段自动调用控制器/方法。 (http://domain.com/controller/method)为了防止出现这种情况,您可以编辑application / config / routes.php文件。有关详细说明,请参阅oficial guide。
答案 1 :(得分:1)
您可以将GET参数作为隐藏输入元素发出,即:
<input type=hidden name="name_of_parameter" value="value_of_parameter" />
HOWEVER ,在执行此操作时,请记住两个非常重要事项:
由于我从您的示例推断出您使用它来识别和验证用户,我强烈建议您使用浏览器cookie(以及编码此数据校验和的数字签名,以便如果它被改变,你可以很容易地识别它是无效的。)
答案 2 :(得分:0)
您还应该将查询字符串变量设置为true:
在您的CodeIgniter配置中;
$config['enable_query_strings'] = TRUE;
但请记住,这会改变您的codeigniter应用程序的行为方式。 See more here
答案 3 :(得分:0)
为什么不能简单地在HTML表单中添加隐藏字段并将其与表单一起作为POST数据发送?
<input type="hidden" name="name" value="dan" />
当然,您可以使用当前的任何值动态替换值部分。