我已经倾注了文档,但我似乎无法找到如何将URI路由到模块。
我的模块目前包含一个使用正确目录结构的控制器(目前有大量空目录)。我的控制器在modules/module_name/classes/controller
内,而我的路由文件在modules/module_name/config/routes.php
内。
我在/app/config/routes.php
和modules/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);
}
}
答案 0 :(得分:1)
命名空间名称中不能有下划线。控制器名称相同。
自动加载器会在查找文件时将下划线转换为目录分隔符。
答案 1 :(得分:0)
首先,您应该在app / config / config.php
中设置应用程序模块的路径'module_paths' => array(
APPPATH.'modules'.DS, // path to application modules
)
在app / config / 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
文件。