Do not understand routing in Kohana php framework
尝试学习 Kohana,来自 Asp.Net MVC 3。在 MVC 中,我习惯于默认路由(非常类似于 Kohana 中的默认路由)的工作方式如下:
默认路由匹配以下任何一个:
我希望它在 Kohana 中是一样的,但似乎所有匹配的都是这样的:
这是我在 bootstrap.php 中的设置:
1 2 3 4 5 6 7 8 9 10
| Kohana ::init(array(
'base_url' => '/kohana',
'index_file' => FALSE
));
Route ::set('default', '(<controller>(/(/<id>)))')
->defaults(array(
'controller' => 'home',
'action' => 'index',
)); |
因此,如果我在地址栏中输入 localhost/kohana,我会看到控制器 home 和操作索引 (action_index) 调用的视图。但是,如果我输入 localhost/kohana/home/index,我会收到一个错误,说该对象不存在。
这是为什么?我不应该能够在 url 中输入控制器和操作并获得正确的路由吗?所以基本上我不知道如何输入 URL 以获取操作方法...
对不起,如果这是一个愚蠢的新手问题,但我无法弄清楚谷歌搜索和查看 Kohana 文档......我已经被 Asp.Net MVC 路由总是只是工作,所以我从来没有真正了解过它......
- 默认情况下,您的路线应该是匹配的,所以很难说什么是错的。您还有其他路由规则吗?
-
不,我没有定义任何其他路由,除了将默认控制器更改为 home 而不是 welcome,正如您在示例中看到的那样。没有添加其他路线......就像我说的,localhost/kohana 有效,但不是 localhost/kohana/home/index
-
您是否使用 RewriteBase /kohana/ 修改了 .htaccess?
-
不,我现在尝试过,但我从未使用过 .htaccess。但我的被称为example.htaccess,不知道这是否重要?无论如何它没有帮助......我的base_url错了吗? (见上文)我的应用程序结构是 c:\\\\\\\\xampp\\\\\\\\htdocs\\\\\\\\kohana\\\\\\\\ ,下面显然是应用程序文件夹等......
-
然后检查我的答案,它应该可以解决问题
将example.htaccess 重命名为.htaccess,打开它并将RewriteBase / 行更改为RewriteBase /kohana/。 Windows 资源管理器可能不允许没有名称的文件,因此您必须使用另一个文件管理器(例如 Total Commander)。
- @egis - 是的 :) 我从不费心去检查,因为我使用 TC :)
-
太好了,谢谢它的工作!我只是使用命令行顺便说一句:-) 非常感谢你,最后......!