我想要这两个网址:
/管理/用户/添加
和
/管理/用户/ 3 /修改
指向我的用户控制器中的edit($user_id = 0)
功能。第二个网址中的数字3必须传递给$user_id
参数。
如何顺利完成这项工作?
答案 0 :(得分:3)
在application / config / routes.php中的setting up a route:
$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";
答案 1 :(得分:1)
作为分离逻辑的替代方案。
我通常有两个控制器,它们都使用相同的视图。
admin/user/add
admin/user/edit/3
两者都指向视图
admin/user_form.php
然后在发布表单时访问save_user()方法。
但正如Mischa所说,通过设置路线,你可以指出任何方法的任何网址。
答案 2 :(得分:0)
你能做到吗
public function users ($type, $id = null)
{
if ($type === 'edit')
{
// do edit stuff
}
else
{
// ad add stuff
}
}
答案 3 :(得分:-3)
<强> Sulotion:强>
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);
}