[英]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的第一部分,並且等於user
或admin_user
。 以前,控制器部分是可選的,因此也可以匹配對/
URI的調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.