2013-08-02 56 views
0

我是MVC的初學者,並試圖弄清楚這一點。更多的愛好者比其他任何東西,但我試圖學習!Kohana 3.3路由和內部請求

我試圖創建一個包含多個區域的管理區域。店,博客,社交等

我使用的目錄佈局是:

Controller [folder] 
-Admin [folder] 
--area name, ie Shop/Blog/Social [folder] 
--- Index.php (controller for that area) 

我使用這個路由的店:

Route::set('admin-shop', 'admin/shop(/<action>)') 
    ->defaults(array(
     'directory' => 'admin', 
    'controller' => 'shop_index', 
    'action'  => 'index',   
)); 

加載控制器/管理/Shop/Index.php:Class Controller_Admin_Shop_Index extends Controller {}。這一切都很好,這真是太棒了!

我最終想做的是創建一個管理區域:/ admin /,它會在導航到的時候加載其他區域。

這就是我陷入困境,不知道該往哪裏去的地方。

我希望能夠查看url.com/admin/,並且在那裏會出現不同區域的標籤。這將加載url.com/admin/shop/或url.com/admin/social/

我需要爲每個目錄創建一個catch所有路由嗎?

我嘗試失敗:

Route::set('admin', 'admin/<directory>') 
    ->defaults(array(
     'directory' => 'admin', 
    'controller' => 'index', 
    'action'  => 'index',   
)); 

或者我需要爲所有可能的領域,而不是把一個路線?

應用程序流將加載管理員/索引,然後從該控制器我希望能夠通過內部請求加載/顯示其他部分。我是否全部錯了?我試圖劃分每個區域,以便在將來我需要更改社交時,我不必觸摸任何其他管理區域,也不必觸摸我正在更改的部分之外的文件數量。

對不起,很長的文章,謝謝你可以提供任何幫助!

回答

0
Route::set('admin/backend/shop', 'admin/backend/shop(/<controller>(/<action>(/<overflow>)))', 
    array('action' => '(force)', 'overflow' => '.*?') 
    )->defaults(array(
     'directory' => 'admin_backend_shop', 
     'controller' => 'index', 
     'action'  => 'index', 
    )); 

Route::set('admin', 'admin(/<controller>(/<param_action>(/<overflow>)))', 
    array('param_action' => '(update|view)', 'overflow' => '.*?')) 
    ->defaults(array(
     'directory' => 'admin', 
     'controller' => 'index', 
     'action'  => 'index', 
    )); 

結束工作!