如何在CodeIgniter中从URL获取id?

12

我正在尝试从URL中获取“id”,以便删除特定选定的产品。我已经使用了$this->uri->segment(3),但它没有从URL中获取任何值。尽管我可以在我的URL中看到“product_id”。

如果我使用$this->url->segment(2),它会给我URL中的第二个值,但我无法获取产品ID。 以下是我的代码。请指导我。

VIEW

echo "<a href='delete_controller?product_id=$product_id'>";
echo $name;
echo "</a>";

当我点击$name时,会生成以下URL。

http://localhost/designs2/index.php/products_controller/delete_controller?product_id=70

控制器

public function delete_controller()
    {
        echo $product_id =$this->uri->segment(3);           
        echo "Taha";
        $this->load->view('delete_confirmation');
    }
9个回答

23

请检查以下代码,希望您能找到所需的参数

echo $this->uri->segment('3');

这是旧的方法,使用URI不是一个好的做法,因为在这种情况下,您将其绑定到第二个或第三个段上。但是@agha的方法很棒。 - heySushil

22

如果你需要传递参数,你应该像这样输入URL

localhost/yoururl/index.php/products_controller/delete_controller/70

并且在控制器函数中,您可以像这样读取

function delete_controller( $product_id = NULL ) {
  echo $product_id;
}

谢谢!我从<a>标签中删除了“?product_id=”,这给了我完美的URL。 - Taha Kirmani

6
$product_id = $this->input->get('id', TRUE);
echo $product_id;

2

查看页面

  <a href="<?php echo base_url();?>products_controller/delete_controller/<?php echo $product_id;?>"><?php echo $name; ?></a>

控制器页面

  function delete_controller( $product_id) {

         echo $product_id;
         //add your logic

  }

1
有点晚了,但这对我有效。
  $data_id = $this->input->get('name_of_field');

1
我认为你可能没有正确使用CodeIgniter URI路由: http://ellislab.com/codeigniter%20/user-guide/general/routing.html 基本上,如果你有一个Products_controller控制器,其中有一个名为delete($id)的方法,而你创建的URL的形式是http://localhost/designs2/index.php/products_controller/delete/4,则delete函数会将$id作为参数接收。
根据你提供的信息,我认为你可以使用$this->input->get('product_id);来获取id。

1
在Codeigniter中,你不能像在Core PHP中那样通过URL传递参数。所以请移除"?"和"product_id",只需传递id即可。如果你想要更高的安全性,可以加密id并进行传递。

0
$CI =& get_instance();

if($CI->input->get('id'){
    $id = $CI->input->get('id');

}

5
解释你的想法和过程会更好,而不仅仅是展示代码。这样可能会帮助更多的人 :) - mrhn

0

n = 是你URL的最后一部分 $id = $this->uri->segment(n);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接