2013-08-02 55 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', 
    )); 

结束工作!