0

我已经翻阅了文档,但似乎不知道如何将 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);     
    }
}
4

2 回答 2

1

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

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

于 2013-01-10T20:19:42.147 回答
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)',

但是,由于您在 Controller 的 Name 中使用下划线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自动加载期间未找到您的文件。

于 2014-09-24T08:19:18.370 回答