Php 如何更改url,使其看起来像CodeIgniter中的cleanUrl
我想更改读取的url 到 其中,user是控制器,getdetails是方法,5是用户ID 我怎样才能做到这一点 我是这样做的 我将getdetails更改为index,这样我就不需要再提到getdetailsPhp 如何更改url,使其看起来像CodeIgniter中的cleanUrl,php,codeigniter,Php,Codeigniter,我想更改读取的url 到 其中,user是控制器,getdetails是方法,5是用户ID 我怎样才能做到这一点 我是这样做的 我将getdetails更改为index,这样我就不需要再提到getdetails class user extends CI_Controller { function index() { $userid = $_GET['userid']; $this->load->model('data_model');
class user extends CI_Controller {
function index()
{
$userid = $_GET['userid'];
$this->load->model('data_model');
$result=$this->data_model->data($userid);
}
}
更改后,它现在看起来像
更新
是否可以在route.php中执行以下操作
$route['bloop/(:num)]=“foldername/bloop/index/$1”代码>
其中foldername是我的服务器上的某个文件夹请查看有关URI路由的文档:
你必须做两件事:
首先,在application/config/routes.php
中定义路由:
$route['user/(:num)'] = "user/index/$1";
并为您的操作方法提供一个参数,如所述:
class user extends CI_Controller {
function index($id)
{
$userid = $id;
$this->load->model('data_model');
$result=$this->data_model->data($userid);
}
}
上面的代码使url看起来像
但您不必总是在索引函数中这样做,您可以像下面这样做
class user extends CI_Controller {
function index($id)
{
$userid = $id;
//
//do some other things
//
$this->getdetails($userid); //default handle
}
function getdetails ($userid )
{
$this->load->model('data_model');
$result=$this->data_model->data($userid);
}
}
url可以是两者
而在配置中更改$route是否会影响其他控制器?我希望这种类型的功能只适用于用户控制器,而不适用于其他控制器?是的,它将影响每个控制器,您没有选择权。但是,如果您确保您的路线以user/
开头,它只会影响用户控制器。如果您决定为另一个控制器设置,即用户/测试
,您可以设置$route['user/test']='othercontroller/test'代码>。定义的路由顺序很重要。很好,这是route.php 1中的顺序$路由['defaultcontroller']=“视频”;2.$route['user/:num']=“user”;是吗?正如@Brewal所说,定义的路线顺序很重要。所以,让你的最后一条路线成为你的默认路线。然后任何异常,包括404路由,都会在该异常之前发生。它不起作用,传递的值无法到达该类中的函数。路由优先级为1$路由['user/:num']=“user”;2.$route['404_override']='';3.$route['default_controller']=“管理员/视频”;可能的原因是什么?然后你有重复的内容问题?没关系,如果你希望索引功能可以做一些其他的事情,这可能是一个不错的选择
class user extends CI_Controller {
function index($id)
{
$userid = $id;
//
//do some other things
//
$this->getdetails($userid); //default handle
}
function getdetails ($userid )
{
$this->load->model('data_model');
$result=$this->data_model->data($userid);
}
}