我已阅读文档,但尚不清楚您何时以及为什么要创建 Route 条目。
基本上,如果您的 URL 不符合正常的 /controller/action 结构,则需要一个 Route 条目。如果您创建了控制器 A 和控制器 B 都带有索引操作,那么如果您总是要使用标准 URL 语法访问这些操作,则不需要向 bootstrap.php 添加路由:
http://www.example.com/A/index
http://www.example.com/B/index
如果没有指定,您可以不使用“索引”,因为它是默认操作。
假设您希望控制器 A 成为默认站点控制器,这意味着您不想在 URL 中使用 A,您希望在域之后使用操作:
http://www.example.com/index
那么您确实需要一个路由来告诉 Kohana,任何与您创建的任何路由(或者如果您没有)不匹配的 URL 都应该由您的默认路由处理。您将在 bootstrap.php 中创建此路由:
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'A',
'action' => 'index'
));
这表示如果用户转到http://www.example.com,Kohana 将使用控制器 A 的 index 动作。如果用户转到 http://www.example.com/foo,那么 Kohana 将使用控制器 A 的 foo 动作。匹配任何其他控制器将转到 A 控制器。如果用户请求 A 未处理的操作,他将收到 404 异常。
您仍然拥有 B 控制器,因此无需任何路由即可正常工作。如果用户转到http://www.example.com/B/index,Kohana 知道应用程序中的 B 控制器,因此它将转到那里的 index 操作。