簡體   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