所以redmine有一个非常奇特的网址映射风格,我观察到:
http://demo.redmine.org/projects/<project-name>/controller/action
样品:
http://demo.redmine.org/projects/produto/activity
http://demo.redmine.org/projects/produto/issues/new
http://demo.redmine.org/projects/produto/issues/gantt
http://demo.redmine.org/projects/produto/files
,随着项目的变化,网址会发生变化。
我如何在codeigniter中执行此操作?我认为可以用routes.php完成,但到目前为止我无法到达任何地方。
寻求任何帮助。感谢。
答案 0 :(得分:3)
在“application / controllers / projects.php”控制器中使用以下功能:
public function _remap($method)
{
if ($method == 'project-name')
{
//display project1
}
elseif($method == 'project-name2')
{
//display project2
}
}
您可以通过从数据库中提取它们来为不同的方法执行相同的操作
看看这里: http://codeigniter.com/user_guide/general/controllers.html#remapping
您还可以使用application / config / routes.php
中的自定义路由来路由您的控制器$route['example'] = "controller/function";
$route['example2/(:any)'] = "controller/function";
答案 1 :(得分:2)
您可以在application / config / routes.php中使用routes文件 你会使用这样的东西:
// the $1 maps to :any
$route['projects/produto/:any'] = "$1";
// the $1 maps to the first any, $2 maps to the second :any
$route['projects/produto/:any/:any'] = "$1/$2";
如果要处理干净的URL,则需要启用mod_rewrite。否则期望index.php / controller / action。我不能在那里测试它,但你应该参考:
添加路由后(在配置中必须称为$ route []),刷新页面并尝试转到URL!
答案 2 :(得分:0)
将此添加到您的routes.php(顺便说一下:您需要启用网址重写才能使路由正常工作,即使用.htaccess
)
$route['projects/(:any)/(:any)/(:any)'] = "$2/$3/$1";
例如/projects/produto/issues/new
将在类问题中调用new函数并将参数'produto'传递给它