[英]How to make url /username in codeigniter?
我目前正在使用 codeigniter。 我目前可以通过使用/user/profile/profile_id
查看个人资料,但我想这样做,以便用户可以使用/username
导航到个人资料以使其更简单。
我将如何去做这件事我不知道从哪里开始?
class User extends CI_Controller{
public function index(){
if($this->session->userdata('is_logged_in')){
redirect('user/profile');
}
}
public function profile(){
$profile_id = $this->uri->segment(3);
$ip = $this->session->userdata('ip_address');
$curr_user = $this->session->userdata('id');
$data['profile'] = $this->db->get_where('users', array('id' => $profile_id))->row_array();
$data['followers'] = $this->db->get_where('followers', array('following_id' => $profile_id))->num_rows();
$data['following'] = $this->db->get_where('followers', array('follower_id' => $profile_id))->num_rows();
$data['doesFollow'] = $this->db->get_where('followers', array('follower_id' => $curr_user, 'following_id' => $profile_id))->num_rows();
$data['posts'] = $this->db->get_where('posts', array('user_id' => $profile_id))->result_array();
$data['main_content'] = 'profile';
$this->load->view('template', $data);
$this->get_profile_view($profile_id, $ip, $curr_user);
}
}
路由文件
$route['default_controller'] = "signin";
$route['404_override'] = '';
我认为您尝试实现的功能如下:
所以这里的计划是创建一个自定义的 404 处理程序,检查提供的路由是否是用户名,否则,它会显示一个 404 页面。
我们需要做的第一件事是设置我们的自定义 404 控制器:
$route['404_override'] = 'profile';
然后我们创建我们的自定义 404 控制器:
class Profile extends CI_Controller {
public function __construct() {
parent::__construct();
}
public function index()
{
$username = $this->uri_segment(1);
if (empty($username)) {
$this->displayPageNotFound();
}
$this->load->model('muser');
// Check if parameter is not a valid username.
if (!$this->muser->checkIfUsername($username)) {
$this->displayPageNotFound();
} else {
// Load data for user profile.
$ip = $this->session->userdata('ip_address');
$curr_user = $this->session->userdata('id');
$data['profile'] = $this->db->get_where('users', array('id' => $profile_id))->row_array();
$data['followers'] = $this->db->get_where('followers', array('following_id' => $profile_id))->num_rows();
$data['following'] = $this->db->get_where('followers', array('follower_id' => $profile_id))->num_rows();
$data['doesFollow'] = $this->db->get_where('followers', array('follower_id' => $curr_user, 'following_id' => $profile_id))->num_rows();
$data['posts'] = $this->db->get_where('posts', array('user_id' => $profile_id))->result_array();
$data['main_content'] = 'profile';
$this->load->view('template', $data);
$this->get_profile_view($profile_id, $ip, $curr_user);
}
}
protected function displayPageNotFound() {
$this->output->set_status_header('404');
$this->load->view('page_not_found');
}
}
唯一需要实现的是带有 checkIfUsername() 方法的 muser 模型。 如果您需要更多信息,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.