2013-01-10 77 views
0

我已经倾倒了文档,但我似乎无法找到如何将URI路由到模块。如何路由到模块?

我的模块目前包含一个使用正确目录结构(目前大量空目录)的控制器。我的控制器在modules/module_name/classes/controller之内,我的路由文件在modules/module_name/config/routes.php之内。

我试图在这两个/app/config/routes.phpmodules/module_name/config/routes.php如下:

<?php 
return array(
    '_root_' => 'md5_encrypt/index', // The default route 

    'tools/geek/md5_encrypt' => array('md5_encrypt'), 
); 

控制器看起来像以下(但我不认为这是相关的):

<?php 

/** 
* MD5 Encrypt Controller. 
* 
* Online tool to encrypt a string using MD5 
* 
* @package app 
* @extends Controller 
*/ 

namespace Md5_encrypt; 

class Controller_Md5_Encrypt extends Controller_Template 
{ 

    /** 
    * The tool 
    * 
    * @access public 
    * @return Response 
    */ 
    public function action_index() 
    { 
     $data = array(); 
     $this->template->tab = 'geek'; 
     $this->template->title = 'MD5 Encrypt Tool'; 
     $this->template->content = View::forge('welcome/index', $data);  
    } 
} 

回答

1

你不能在名称空间名称中有下划线。控制器名称相同。

当查找文件时,自动加载器会将下划线转换为目录分隔符。

+0

谢谢,但这并没有解决它。我想可能会有错误的路线工作 – Mike

0

首先,你应该设置你的应用程序模块的路径在app /配置/ config.php文件

'module_paths' => array(
    APPPATH.'modules'.DS, // path to application modules 
) 

在app /配置/ routes.php文件

'tools/geek/md5_encrypt' => 'md5_encrypt(module_name)/md5_encrypt(controller)', 

但二集路由,因为您正在使用下划线作为控制器的名称class Controller_Md5_Encrypt extends Controller_Template,它导致了一个新的路径。

/modules/md5_encrypt/classes/controller/md5/encrypt.php 

下划线(_)在你的控制器的名字自动加载http://fuelphp.com/docs/general/coding_standards.html#classes

/modules/md5_encrypt/classes/controller/md5_encrypt.php文件没有自动加载过程中发现的过程中转换成目录分隔符。