我想要这两个网址:
/管理员/用户/添加
和
/admin/users/3/编辑
指向edit($user_id = 0)
我的用户控制器中的功能。第二个 url 中的数字 3 必须传递给$user_id
参数。
我怎样才能顺利地做到这一点?
我想要这两个网址:
/管理员/用户/添加
和
/admin/users/3/编辑
指向edit($user_id = 0)
我的用户控制器中的功能。第二个 url 中的数字 3 必须传递给$user_id
参数。
我怎样才能顺利地做到这一点?
通过在 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";
作为分离逻辑的替代方法。
我通常有两个控制器,它们都表示相同的视图。
admin/user/add
admin/user/edit/3
两者都指向视图
admin/user_form.php
然后在表单发布后访问 save_user() 方法。
但正如 Mischa 所说,通过设置路由,您几乎可以将任何 url 指向任何方法。
你能做这个吗
public function users ($type, $id = null)
{
if ($type === 'edit')
{
// do edit stuff
}
else
{
// ad add stuff
}
}
消音:
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);
}