CodeIgniter HMVC路由

时间:2014-07-18 09:40:14

标签: codeigniter routing hmvc

目前正在使用HMVC

处理CodeIgniter应用程序

HMVC应用程序有自己的包含

的routing.php
$route['finance/bill/add'] = 'finance/show_addBill';

$route['finance/transaction/add'] = 'finance/show_addTransaction';

$route['finance/(:any)'] = 'finance/$1';

$route['finance'] = 'finance';

该应用程序有一个财务控制器。 什么时候去

http://localhost/finance** it goes to **public function index(){}

http://localhost/finance/transaction/add DOES NOT go to **public function show_addTransaction() {}

http://localhost/finance/addTransaction DOES goes to **public function show_addTransaction() {}

我无法弄清楚为什么以上路线不起作用:S

1 个答案:

答案 0 :(得分:1)

你不应该在HMVC应用程序中定义路线(作为一个非常强大的经验法则 - 有例外但很少见。)

您应该有一个文件夹结构,如:

Modules
- Finance
- - Controllers
- - - finance //should have index, add and an other generic functions.
- - - transaction // transactions specific functions
- - - bill // bill specific functions.

路由是自动的 - 沿着这些方向:

url/finance - >寻找Modules/Finance/Controllers/Finance/Index()

url/finance/bill - >它将首先查找Modules/Finance/Controllers/Finance(.php)/Bill(),然后查找Modules/Finance/Controllers/Bill(.php)/index()

因此,对于您的方案,您应该:

$route['finance/bill/add']

bill.php控制器 - class bill - 方法add

$route['finance/transaction/add']

transaction.php控制器 - class transaction - 方法add

$route['finance/(:any)']

不存在 - 正如我所说的URL路由是自动的,所以只要你有相关的控制器和方法就可以找到东西

$route['finance']

使用finance.php方法的简单index控制器。