嗨,专业人士度过了美好的一天。
我是这个Codeigniter框架的新手。
问题1:如何避免在url中传递参数或是否有其他选项,例如使用虚拟值或默认值而不是传递原始值?
示例:目前我喜欢这个
http://localhost/manage?keyword1=SAP&keyword2=LAB
但我希望它像这样
http://localhost/manage?keyword1=XXX&keyword2=YYY
问题2:我看过一些例子,因为他们使用重映射功能来完成这项任务,但我没有得到 重新映射 的方式工作。这是正确的做法吗?
请给出你的建议,并告诉我正确的方式,抱歉这可能是一个愚蠢的问题,但我搜索了很多我没有做任何事情。提前谢谢
答案 0 :(得分:1)
你必须像http://localhost/manage/controller/method/xxx/yyy
然后在控制器
function method ( $x , $y )
{
echo $x;
echo $y;
}
答案 1 :(得分:1)
function somefunction ($param1 = null, $param2 = null)
{
}
如果params没有被传递,那么它将具有默认值null
,但是如果参数被传递,那么你可以像这样处理它们:
function somefunction ($param1 = null, $param2 = null)
{
$param1 = intval($param1) //if you want it to be int
$param2 = floatval($param2) //if you want it to be float
}
如果您想在浏览器中直观地更改参数,那么只需将其重定向为:
function somefunction ($param1 = null, $param2 = null)
{
if($param1 == null || $param2 == null)
{
$param1 = 'XXX'; //put any value you want by your logic
$param2 = 'YYY'; //put any value you want by your logic
header("Location: http://localhost/manager/somefunction/".$param1.'/'.$param2);
}
}
答案 2 :(得分:0)
在codeigniter中,有一个名为“session”的库。在这个库中有一个名为flashdata的功能。这就像一个$ _POST方法,但它不需要表单。
实施例: 要在flashdata中设置变量:
$this->session->set_flashdata('example', $variable1);
'example'是flashdata的名称,$ variable是它存储的内容。
要在下一页访问您的数据:
$variable2 = $this->session->flashdata('example');
$ variable2将等于你在上一页中设置的$ variable1。
希望这有帮助!只是通过URL传递参数的替代方法。