我想从每个控制器中删除控制器名称,是否可以在路由文件中这样做。对于单个控制器,它对我来说工作得很好,如果我想在我的项目中使用所有控制器怎么办?
$route['default_controller'] = 'user';
$route['(:any)'] = "user/$1";
$route['(:any)/(:any)'] = "user/$1/$1";
$route['(:any)/(:any)/(:any)'] = "user/$1/$1/$1";
$route['(:any)'] = "grant/$1";
$route['(:any)/(:any)'] = "grant/$1/$1";
$route['(:any)/(:any)/(:any)'] = "grant/$1/$1/$1";
当我尝试这个时,它不适合我
try this
你可以试试这些
// url could be yourdomain/imran
$route['(:any)'] = 'profile/index/$1';
// url could be yourdomain/10
$route['(:num)'] = 'profile/index/$1';
// url could be yourdomain/imran10
$route['([a-zA-Z0-9]+)'] = "profile/index/$1";
你的类可能看起来像这样
class Profile extends CI_Controller {
public function index($id)
{
// $id is your param
}
}
更新: (Be careful)
请记住,如果你有一个类Someclass
,你使用url
像yourdomain/Someclass
,那么这将被路由到profile/index/$1
,如果你有$route['(:any)']
或$route['([a-zA-Z0-9]+)']
。
我得到答案了
$route['(:any)'] = "user/$1"; //this is dynamically for user controller
以静态方式为另一个控制器设置
$route['functionName'] = "controller/functionName";
$route['functionName'] = "controller/functionName";
这个工作对我来说很好,我希望如果这是可能的动态
您提供的代码示例将不起作用,因为规则完全相同,例如:
$route['(:any)'] = "user/$1";
$route['(:any)'] = "grant/$1";
两者之间没有区别,那么应用程序如何知道将请求路由到哪里呢?它只会为所有请求(用户控制器)选择第一个匹配的路由
你想要达到的目的是不可能的,除非(如@syed)已经试着在上面解释,至少在url的次要部分有差异。
例如,任何数字id都传递给用户控制器。
// url could be yourdomain/10
$route['(:num)'] = 'user/index/$1';
任何基于文本的都被传递到不同的控制器
// url could be yourdomain/imran
$route['([A-z]+)'] = "name/index/$1";
以此类推。