Codeigniter用户配置文件URL

时间:2012-01-08 09:14:49

标签: php codeigniter url profile

我有一个名为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";

问题是我想要更改它并允许用户直接转到他们的个人资料而无需输入用户/ $ username而不是$ usernamd,如mysite.com/$username ...

我尝试了但它弄乱了一切。我能实现这个目标吗?

感谢。

3 个答案:

答案 0 :(得分:1)

我想实现这样的事情的唯一方法是将所有其他控制器添加到路径文件中。

你可以试试这样的事情

$route['controller'] = "controller";
$route['controller/(:any)'] = "controller/$1";
$route['(:any)'] = "user/$1";

结合陈述here的_remap函数。在您的用户控制器中。

答案 1 :(得分:0)

你听说过_remap function吗? 如果用这个替换index()函数:

public function _remap($username = null) {
    $this->load->view('profile/index');
}

它可能会奏效。您不必使用routes.php。

答案 2 :(得分:0)

我为我的用户使用了这样的东西;这个“p”函数在我的用户控制器mysite.com/users/p/$user_id中,路由很好,但我解决了这个问题,你也可以做索引功能,如果你不想要像“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');
}
}