0

我喜欢 SO 处理 URI 的方式。我想模仿 CI 中的相同行为。我有一个名为的控制器Users,索引方法应该采用一个参数,即用户 ID。我在数据库中搜索与该用户 ID 关联的用户名。考虑一下,user:1username: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');
    }
}

}

为了清楚起见,我正在努力实现这一目标:

https://stackoverflow.com/a/11041075/704015

4

2 回答 2

1

应用程序/config/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);

请包括一个条件做其他事情,以防用户名已经存在以避免循环。

于 2012-12-11T23:48:13.363 回答
0

这在你的 config/routes.php

 $route['users/(:num)/(:any)'] = 'users/$1/$2';

这在你的控制器中

public function users($id,$username = FALSE)
{
于 2012-12-08T15:33:12.487 回答