簡體   English   中英

具有默認子目錄的Kohana 3.1路由

[英]Kohana 3.1 routes with default subdirectories

在嘗試實現用於登錄和注冊的Auth模塊之前,我有一個基本上可以正常工作的應用程序。

我的應用程序目錄結構基本上是:

application
-- classes
  -- controller
     -- admin
        (admin area)
     -- block
        (blocks to display within pages)
     -- page
        (default pages)

默認情況下,我希望具有訪問Controller_Page_Test類的URL,例如http://www.testsite.com/test 或顯式調用將訪問Controller_Admin_Test類的admin或阻止頁面http://www.testsite.com/admin/test 為了進一步使事情復雜化,它還需要處理可選的動作和ID。

我在頂部說,這基本上可以正常工作-直到嘗試添加Auth模塊為止。 Auth模塊調用http://www.testsite.com/user/login,而不是通過默認訪問模塊的路徑,而是在頁面目錄中查找。

為了克服這個問題,我放置了更高級別的路由,但是現在這已成為我的默認頁面處理程序。 明確的電話仍然接通。

我的路線目前如下所示:

Route::set('user', '(<controller>(/<action>(/<id>)))', array('controller' => 'user|admin_user'))
    ->defaults(array(
        'controller' => 'user',
        'action'     => 'index',
        'id'         => NULL,
    ));

Route::set('with_dir', '<directory>/<controller>(/<action>(/<id>))', array('directory' => 'block|admin'))
    ->defaults(array(
        'directory'  => 'page',
        'controller' => 'home',
        'action'     => 'index',
    ));

Route::set('just_id', '<controller>(/<id>)', array('id' => '\d+'))
    ->defaults(array(
        'directory'  => 'page',
        'controller' => 'home',
        'action'     => 'index',
    ));

Route::set('auto_dir', '<controller>(/<action>(/<id>))', array('id' => '\d+'))
    ->defaults(array(
        'directory'  => 'page',
        'controller' => 'home',
        'action'     => 'index',
    ));


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

這可以更好地清理嗎? 以及如何使該模塊僅在需要時才啟動?

是的,它可以清洗得更好。 Kohana開發人員鼓勵人們使用此框架添加所需的盡可能多的路線 您甚至可以為每個操作指定它們,如果您使用適當的方法生成鏈接等(例如, Route::url() ),則將來可以使您更改URL(例如,您可能希望使用/signin代替/user/login )。 Route::url()助手)。

現在,這是指定user路由的另一種方法:

Route::set('user', '<controller>(/<action>(/<id>))', array('controller' => '(user|admin_user)'))
    ->defaults(array(
        'controller' => 'user',
        'action'     => 'index',
    ));

這將僅匹配請求,其中給出了URI的第一部分,並且等於useradmin_user 以前,控制器部分是可選的,因此也可以匹配對/ URI的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM