通过网址传递价值

时间:2015-03-17 14:57:36

标签: php codeigniter

我正在尝试从视图页面向控制器发送网址,但它似乎没有像我想的那样工作。

查看页面

<a href="<?php echo base_url();?>admin/test/product/tbl_product">Product</a>
<a href="<?php echo base_url();?>admin/test/user/tbl_user">User</a>

我想得到“tbl_product”
控制器管理员

<?php
class Admin extends CI_Controller {
  public function test() {
  echo $this->uri->segment(4);
  }
}
?>

但如果段(4)更改为段(3),则会显示屏幕中显示“产品”

4 个答案:

答案 0 :(得分:0)

您的控制器功能应该包含您的网址段的参数

例如:

 public function test($product = 'product', $tbl = 'tbl_product') {
     echo $tbl // contains the string tbl_product
 }

答案 1 :(得分:0)

既然你说你的路线是这样的:

$route['default_controller'] = "admin"; 
$route['404_override'] = ''

,您的网址如下:

<?= base_url() ?>admin/test/product/tbl_product

然后,如果你的base_url()是localhost/my_app,你的网址将被理解为:

http://localhost/my_app/admin/test/product/tbl_product
http://localhost/my_app/CONTROLLER/METHOD/PARAMETER/PARAMETER

所以在你的控制器中,你可以这样做:

class Admin extends CI_Controller {

    public function test($product = NULL, $tbl_product = NULL) {
        echo $product; 
        echo $tbl_product; 
    }

}

答案 2 :(得分:0)

将codeigniter用于此目的很奇怪,因为codeigniter默认使用url格式。

&#34; [BASE_URL] / [控制器] / [方法]&#34;

我认为将所需的值作为获取参数传递会更好更简单,并制定一些httaccess规则,使您的网址对用户和机器人更具可读性。那说你可以这样做:

<a href="<?php echo base_url();?>admin/test?product=tbl_product">Product</a>

<?php
class Admin extends CI_Controller {
  public function test() {
  echo $this->input->get('product');
  //should output 'tbl_product'
  }
}
?>

如果您更喜欢使用uri,那么您应该使用uri,这样就好了。

在你的路线档案中你可能我需要这样的东西。

$route['product/(:any)'] = "Admin/test";

这样您可能会正确访问uri段。

答案 3 :(得分:0)

非常感谢您的光临。

$this->uri->segment(4); // is now working :S

在我对routes.php进行了更改并再次恢复默认后,它无法正常工作。我真不知道之前没有显示结果的原因是什么。