我有一个用codeigniter在PHP上编写的网站。我希望应对的方案如下:
用户注册时,其个性化主页应显示在 www.mysite.com/username 上。其他网址的格式为 www.mysite.com/username/pictures &的 www.mysite.com/username/videos
基本上我需要的是 www.mysite.com/username/method (其中用户名是数据库驱动的)应始终命中同一个控制器,如果数据库中存在用户名。
目前,我正在做的是我使用自定义404控制器来执行此操作。如果URL到达自定义404控制器,我检查控制器名称是否与数据库中的用户名匹配,然后检查方法名称并调用所需方法。像这样:
$this->load->model('school_model');
$this->load->model('event_model');
$this->load->helper('apps_helper');
$controllerName = $this->uri->segment(CONTROLLER);
$controllerMatch = $this->school_model->findSchoolByUid($controllerName);
$this->data['controller'] = $controllerMatch;
if($controllerMatch != false){
$methodName = $this->uri->segment(METHOD);
if($methodName === "something"){
//Do something
}
if($methodName === "something else"){
//Do something else
}
if($methodName === "another thing"){
//Do another thing
}
if($methodName === "last thing"){
//Do last thing
}
...
}
else{
//Load 404 page
$this->output->set_status_header('404');
$data['content404'] = true;
$this->load->view("common/header", $data);
$this->load->view('frontend/index404', $this->data);
$this->load->view("common/footer");
}
我的疑问是,这是我需要的最佳方式吗?我怎样才能改善这个?我听说过针对codeiginiter的HMVC模块化扩展,这可能是一个不错的选择?只是寻找一些建议。
答案 0 :(得分:4)
您可以在配置>中编写此代码来执行此操作routs.php 文件
$route['(:any)/pictures'] = 'yourcontrollername/functionName/$1';
现在在此,如果任何人写的用户名/图片网址都会自动转到控制器。