[英]kohana 3.0 directory to controller
我在Kohana 3.0下拥有我的网站,该网站可与Defaut Route完美配合
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'user',
'action' => 'index',
));
当我尝试访问该地址为http://127.0.0.1/web/
网站时,它将加载URL http://127.0.0.1/web/user
。 没关系。 但是现在我想在控制器下添加admin目录。 所以我的网络树看起来像这样
classes
| controller/
Admin/
dashboard
web.php
| model
我想允许管理员以类似http://127.0.0.1/admin/dashboard
的URL访问管理员页面。 其中,dashboard是管理员目录下的控制器。 我用这个修改引导文件
Route::set('admin', '<directory>(/<controller>(/<action>(/<id>)))',
array('directory' => '(admin)'))->defaults(array(
'controller' => 'user',
'action' => 'index',
));
我可以通过http://127.0.0.1/web/admin/dashboard/
访问管理会话,但是无法访问默认控制器http://127.0.0.1/web/
。 错误Kohana_Request_Exception [ 0 ]: Unable to find a route to match the URI:
我缺少控制器的默认访问权限。 如何设置“路由”以通过以下链接访问我的网站:
http://127.0.0.1/web/
和
http://127.0.0.1/web/admin/dashboard/
编辑从kohana文档中可以得出
In this example, we have controllers in two directories, admin and affiliate. Because this route will only match urls that begin with admin or affiliate, the default route would still work for controllers in classes/controller.
Route::set('sections', '<directory>(/<controller>(/<action>(/<id>)))',
array(
'directory' => '(admin|affiliate)'
))
->defaults(array(
'controller' => 'home',
'action' => 'index',
));
来源: http://kohanaframework.org/3.0/guide/kohana/routing#examples
: http://kohanaframework.org/3.0/guide/kohana/routing#examples
现在,我将代码修改为
Route::set('default', '<directory>(/<controller>(/<action>(/<id>)))',
array(
'directory' => '(admin)'))
->defaults(array(
'controller' => 'user',
'action' => 'index',
));
但是我有这个错误
Kohana_Request_Exception [ 0 ]: Unable to find a route to match the URI:
当我想访问默认控制器如http://127.0.0.1/user/index
该路由将转换为: http://127.0.0.1/admin/web
: http://127.0.0.1/admin/web
,但是您的Admin
文件夹中需要包含user
控制器。
Route::set('default', '<directory>(/<controller>(/<action>(/<id>)))',
array(
'directory' => '(admin)'))
->defaults(array(
'controller' => 'user',
'action' => 'index',
));
如果您希望目录为可选目录,则需要
Route::set('default', '(<directory>(/<controller>(/<action>(/<id>))))',
array(
'directory' => '(admin)'
)
)
->defaults(array(
'directory' => 'admin',
'controller' => 'dashboard',
'action' => 'index',
));
但是,根据您的情况,您需要多条路线。 在“全包”路线上方,输入以下内容:
Route::set('user', 'user(/<controller>(/<action>(/<id>)))')
->defaults(array(
'directory' => 'user',
'controller' => 'user',
'action' => 'index',
));
Route::set('admin', 'admin(/<controller>(/<action>(/<id>)))')
->defaults(array(
'directory' => 'admin',
'controller' => 'dashboard',
'action' => 'index',
));
Route::set('default', '(/<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'index',
'action' => 'index',
));
尝试将目录插入->defaults
Route::set('whatever', 'whatever')
->defaults(array(
'directory' => 'admin',
'controller' => 'user',
'action' => 'index',
));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.