【发布时间】:2013-09-10 12:38:35
【问题描述】:
我最近开始使用 kohana 3.3.1 框架并遇到了一些问题。
我想为不同的入口点创建不同的路线。现在,这是默认路线,似乎可以正常工作(我认为):
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'welcome',
'action' => 'index',
));
当我访问该网站时,它会显示“你好,世界!”。
我有一个名为 Street 的控制器,位于 application/classes/Controller/Street.php 中。
这个控制器的代码是:
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Street extends Controller {
public function action_index()
{
$this->response->body('hello, street!');
}
问题是,我想在 URI 后面输入 /something,它应该重定向到定义的控制器和操作。但这似乎不起作用。当我在默认 URI 后面输入任何内容时,我得到 404 错误。
路线,我用这个
/**
* Set the routes. Each route must have a minimum of a name, a URI and a set of
* defaults for the URI.
*/
Route::set('test1', 'street/<id>')
->defaults(array(
'controller' => 'street',
'action' => 'index',
));
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'welcome',
'action' => 'index',
));
任何帮助将不胜感激。
编辑
我刚刚尝试了 @Darsstar 的指令去 /index.php/street,它成功了! 但是现在,当我尝试转到 /index.php/street/derp 时,我收到一条错误消息
在此服务器上找不到请求的 URL derp。
所以我猜它还不能正常工作
【问题讨论】:
-
您的控制器是否正确(检查名称是否区分大小写、文件夹是否正确、方法是否正确)?
-
感谢您的回复@kingkero。
codeRoute::set('test1', 'test/') ->defaults(array( 'controller' => 'test', 'action' => 'index', )); /code如果我在地图控制器中有一个测试控制器(就像welcome)和action_index(就像在welcome控制器中一样)它应该可以正常工作吗?但是当我浏览到 ../test 时,它告诉我找不到请求的资源! -
不客气,但它解决了问题吗?如果没有,请提供更多代码(如您要访问的控制器)
-
我更新了我的第一篇文章,提供了更多细节
-
如果你去
index.php/test可以吗?因为那很可能与您的.htaccess 有关。哦,'test/' 与 URI 'test' 不匹配,因为 id 参数不在括号之间,因此是必需的。但是,默认路由会匹配它,并且应该将您调度到 Controller_Test::action_index()。
标签: php url-routing kohana