繁体   English   中英

kohana 3.0目录到控制器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM