我有一个名为user的控制器,它现在只加载用户配置文件页面
class user extends CI_Controller {
public function __construct(){
parent::__construct();
}
public function index($username = null){
//load index page
$this->load->view('profile/index');
}
}
我还路由了它,所以我可以在路由中从user/$username加载它
//user profiles pretty url
$route['user/(:any)'] = "user/index/$1";
问题是,我想更改它,允许用户直接进入他们的个人资料,而不必键入user/$username,而是像mysite.com/$username那样键入$usernamd…
我试过了,但它把一切都搞砸了。我怎样才能做到这一点?
谢谢。
我想实现这样的目标的唯一方法是将所有其他控制器添加到路由文件中。
你可以试试这种
$route['controller'] = "controller";
$route['controller/(:any)'] = "controller/$1";
$route['(:any)'] = "user/$1";
结合此处所述的_remap函数。在您的用户控制器中。
您听说过_remap函数吗?如果将index()函数替换为:
public function _remap($username = null) {
$this->load->view('profile/index');
}
它可能会起作用。您不必使用routes.php.
我为我的用户使用了这样的东西;我的用户控制器mysite.com/users/p/$user_id中的这个"p"函数,路由很好,但我这样解决了它,如果你不想要像"p"这样的东西,你也可以用它做索引函数
function p()
{
$total_slashes = count ( $this->uri->segment_array () );
$last = end ( $this->uri->segments );
if ($total_slashes == 3) {
$data ['userdetails'] = $this->users_model->userDetails ( $last );
// $last is our user_id
$this->load->view('profile/index');
}
}