我正在尝试从视图页面向控制器发送网址,但它似乎没有像我想的那样工作。
查看页面
<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),则会显示屏幕中显示“产品”
答案 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进行了更改并再次恢复默认后,它无法正常工作。我真不知道之前没有显示结果的原因是什么。