0

我想要这两个网址:

/管理员/用户/添加

/admin/users/3/编辑

指向edit($user_id = 0)我的用户控制器中的功能。第二个 url 中的数字 3 必须传递给$user_id参数。

我怎样才能顺利地做到这一点?

4

4 回答 4

3

通过在 application/config/routes.php 中设置路由:

$route['admin/users/add'] = "users/edit";
$route['admin/users/(:num)/edit'] = "users/edit/$1";

如果您希望它也适用于其他控制器,您可以这样做:

$route['admin/(:any)/add'] = "$1/edit";
$route['admin/(:any)/(:num)/edit'] = "$1/edit/$2";

或相同,使用正则表达式:

$route['admin/([a-z]+)/add'] = "$1/edit";
$route['admin/([a-z]+)/(\d+)/edit'] = "$1/edit/$2";
于 2012-09-13T01:54:38.687 回答
1

作为分离逻辑的替代方法。

我通常有两个控制器,它们都表示相同的视图。

admin/user/add
admin/user/edit/3

两者都指向视图

admin/user_form.php

然后在表单发布后访问 save_user() 方法。

但正如 Mischa 所说,通过设置路由,您几乎可以将任何 url 指向任何方法。

于 2012-09-13T03:25:25.713 回答
0

你能做这个吗

public function users ($type, $id = null)
{
     if ($type === 'edit')
     {
           // do edit stuff
     }
     else
     {
           // ad add stuff
     }
 }
于 2012-09-13T01:23:02.990 回答
-3

消音:

function _remap($method)
{
$param_offset = 2;

// No method, point to...
if (!method_exists($this, $method))
{
    if (is_numeric($method) || $method == 'add')
    {
        // Show single
        $param_offset = 1;
        $method = 'show';
    }
    else
    {
        // Index
        $param_offset = 1;
        $method = 'index';
    }
}

// Since all we get is $method, load up everything else in the URI
$params = array_slice($this->uri->rsegment_array(), $param_offset);

// Call the determined method with all params
call_user_func_array(array($this, $method), $params);
}
于 2012-09-13T07:50:34.873 回答