【问题标题】:Do not understand routing in Kohana php framework不懂 Kohana php 框架中的路由
【发布时间】:2011-11-11 23:26:42
【问题描述】:

尝试学习 Kohana,来自 Asp.Net MVC 3。在 MVC 中,我习惯了默认路由(非常类似于 Kohana 中的默认路由)的工作方式:

默认路由匹配以下任何一个:

/
/Home
/Home/Index

我希望它在 Kohana 中是一样的,但似乎它匹配的只是这个:

/

这是我在 bootstrap.php 中的设置:

Kohana::init(array(
    'base_url'   => '/kohana',
                 'index_file' => FALSE
));

Route::set('default', '(<controller>(/<action>(/<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\ ,下面显然是应用程序文件夹等......
  • 然后检查我的答案,它应该可以解决问题

标签: php routing kohana-3


【解决方案1】:

将 example.htaccess 重命名为 .htaccess,打开它并将RewriteBase / 行更改为RewriteBase /kohana/。 Windows 资源管理器可能不允许没有名称的文件,因此您必须使用另一个文件管理器(例如 Total Commander)。

【讨论】:

  • @egis - true :) 我从来不用检查,因为我使用 TC :)
  • 太好了,谢谢!顺便说一句,我刚刚使用了命令行 :-) 非常感谢,最后...!
猜你喜欢
  • 2015-08-25
  • 2023-03-06
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 1970-01-01
相关资源
最近更新 更多