我喜欢SO处理URI的方式。我想模仿CI中的相同行为。我有一个名为Users
的控制器,索引方法应该采用一个参数,即用户ID。我在数据库中搜索与该用户ID关联的用户名。考虑user:1
有username:Santa Claus
,如何将用户名附加到URI,使其看起来像http://foo.com/users/1/santa-claus
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Users extends CI_Controller {
function index($uID = 0) {
if ($uID > 0) {
$this->load->model('users_model');
$uname = $this->users_model->_getUsername($uID);
#append somehow..
} else {
echo('load all users');
}
}
}
为了清楚起见,我正在努力实现这一目标:
答案 0 :(得分:1)
应用/配置/ routes.php文件
$route['users/(:num)/(:any)'] = 'users/index/$1';
控制器
function index($uID = 0) {
.....
$uname = strtolower(str_replace(" ", "-", $uname));
header("Location: ".base_url()."user/".$uID."/".$uname);
请包含条件做其他事情已经存在用户名已经存在以避免循环。
答案 1 :(得分:0)
这在你的config / routes.php
中 $route['users/(:num)/(:any)'] = 'users/$1/$2';
这在你的控制器中
public function users($id,$username = FALSE)
{