1

我正在为这个项目使用 codeigniter。我有一个 id 值,我从控制器 A 传递到视图 A。这个 id 值是锚标记之间的回显。单击此锚标记时,它会重定向到具有 id 值的另一个控制器 B,并在控制器 B 中处理此 id 值。除了使用 uri 类之外,还有其他方法吗?想要保持网址干净。

当我从控制器 A 切换到视图 A 到控制器 B 时,我想到了一种附加隐藏输入元素的方法,但我意识到它可能非常混乱。

有什么干净的方法吗?提前谢谢各位!

4

2 回答 2

11

使用 Stackoverflow 的新手看看你是否能理解我的布局:

方法一

使用 URI 类,除非您有充分的理由不这样做。

来自 CONTROLLER_A

$data["id"] = ("ID NUMBER");
$this->load->view("VIEW_A", $data);

视图 A 中的锚点

<a href="<?php echo base_url() ?>/controller_b/controllerfunction/<?php echo $id ?>">link</a>

在控制器_B

$id = $this->uri->segment(3);

.

方法二

如果您想隐藏内容,请使用 FORM POST:

$data["id"] = ("ID NUMBER");
$this->load->view("VIEW A", $data);

视图 A 中的锚点

<form name="myform" id="myform" action="<?php echo base_url() ?>/controllerB/controllerfunction/" method="post">
<input type="hidden" name="id" id="id" value="<?php echo $id ?>" />
<input type="submit" value="See more" />
</form>

如果您满足以下条件,您也可以使用 javascript 通过链接在此处提交表单:

 <a href="javascript;" onclick="document.getElementById('myform').submit();"> See more</a>

提示:您也可以使用 css 将不透明度设置为 0 来隐藏表单中的提交按钮;如果链接在表单中,您可以使用javascript:this.submit();

或查询

<a href="javascript;" id="link">See more</a>
$('#link').click(function() {
    $('#myform').submit();
});

在控制器中

$id = $this->input->post("id");
于 2013-02-25T06:11:55.063 回答
1

隐藏的输入将起作用,并且可能还有另一种解决方法,一旦您重定向到该方法并使用您的 id 值,即从数据库中获取数据,使用您需要的干净 URL 再次重定向到另一个控制器方法,希望这会有所帮助

于 2013-02-23T20:12:13.867 回答