【问题标题】:How do I get Kohana to call a specific controller?如何让 Kohana 调用特定的控制器?
【发布时间】:2010-11-11 13:41:48
【问题描述】:

我的路由是这样设置的:

Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
    'controller' => 'static',
    'action'     => 'index',
));

这样输入:

http://localhost/et/testkohana4/

按应有的方式在Controller_Static 上调用action_index

但是,当我输入时:

http://localhost/et/testkohana4/test

我希望它说“找不到 Controller_Test”,但 Kohana 错过了它,我从 Apache 收到一条消息,上面写着“请求的 URL /testkohana4/index.php/test在此服务器上找不到。"

即使我在 controller 目录下放入一个名为 test.php 的文件,其中包含 Controller_Test 类,我仍然会收到 page-not-found 错误。

当我在 URL 中输入特定控制器的名称时,如何让 Kohana 调用它?

【问题讨论】:

    标签: kohana controllers


    【解决方案1】:

    编辑:此答案 cmets 中提供的正确解决方案是将 .htaccess RewriteBase 值更改为

    RewriteBase /et/testkohana4/
    

    (<controller>(<action>(/<id>)))
    

    您的路线有误。 (&lt;action&gt; ...开头没有正斜杠那应该是(/&lt;action&gt; ...

    那些&lt;blocks&gt; 是URL 中的动态段。所以在这个例子中:

    http://localhost/et/testkohana4/test
    

    会导致这个被调用:

    • 控制器:等
    • 动作:testkohana4
    • ID:测试

    这应该适合你。希望对您有所帮助。

    【讨论】:

    • 即使我输入了斜线,我仍然得到“未找到:在此服务器上未找到请求的 URL /testkohana4/index.php/news”。我将.htaccess 文件改回example.htaccess,但这也没有任何效果。我之前有这个工作,什么可能导致 Kohana 看不到我的基本 URL 后面的文本作为控制器名称?
    • 这听起来像是一个 Apache 重写问题。我是在思考子目录 /et/testkohana4 中的 Kohana 文件吗?如果是这样,那么您需要将 RewriteBase 变量修改为“/et/testkohana4/”
    • 谢谢,就是这样,我将.htaccess 中的行更改为RewriteBase /et/testkohana4/ 并且有效。
    • 我打错了,但不能再编辑了。我觉得我好笨。 “我在写你的想法吗”。我知道我的错误:P
    猜你喜欢
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    相关资源
    最近更新 更多