如何让 Kohana 调用特定的控制器?

发布于 2024-10-01 09:50:31 字数 949 浏览 2 评论 0原文

我的路由设置如下:

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 调用该控制器?

My routing is set up like this:

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

so that typing in:

http://localhost/et/testkohana4/

calls action_index on Controller_Static as it should.

However, when I type in:

http://localhost/et/testkohana4/test

I expect it to say "cannot find Controller_Test" but instead, Kohana misses it and I get a message from Apache that says "The requested URL /testkohana4/index.php/test was not found on this server."

Even when I put in a file under the controller directory called test.php with the class Controller_Test in it, I still get the page-not-found error.

How can I get Kohana to call a specific controller when I type its name in the URL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

那小子欠揍 2024-10-08 09:50:31

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

RewriteBase /et/testkohana4/

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

您的路线中存在错误。 (... 开头没有正斜杠 应该是 (/...

那些 ; 是 URL 中的动态段,因此在此示例中:

http://localhost/et/testkohana4/test

将导致调用:

  • Controller: et
  • Action: testkohana4
  • ID:测试

这应该对你有用。

Edit: The correct solution as provided in this answers comments was to change the .htaccess RewriteBase value to

RewriteBase /et/testkohana4/

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

There's a mistake in your route. There is no forward slash at the beginning of (<action> ... That should be (/<action> ...

Those <blocks> are dynamic segments in the URL. So in this example:

http://localhost/et/testkohana4/test

Would result in this being called:

  • Controller: et
  • Action: testkohana4
  • ID: test

That should work for you. Hope that helped.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文