带有多级层次结构点火器的HMVC

问题描述 投票:1回答:3

我正在codeignter3中实现HMVC。我已在core和third_party文件夹中添加了所有必需的文件。

我还创建了modules文件夹。在模块内部,我创建了frontend文件夹在内部文件夹中,我创建了一个文件夹测试,其中创建了3个Folder控制器,模型和视图。在控制器文件夹中,我创建了Test.php,在模型模型中创建了名称Test_model.php,并在视图中创建了一个文件index.php

我的控制器代码是

<?php
class Test extends MX_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->model('test_model');
    }

public  function index()
    {

        $data['main_content'] = 'home/index';
        $this->load->view('front/layout', $data);
    }

}
?>

inside application / config / routes.php

$route['test'] = "frontend/test/Test/index"; 

当我通过localhost / myprojectfoldername / test访问它时,我得到404

codeigniter codeigniter-3
3个回答
0
投票

像这样使用:

 $route['some-route'] = "yourcontroller/yourmethod";

或换句话说:

$route['user'] = 'user/login';

0
投票

关于Codeigniter中HMVC模式的一件事是,您需要很好地遵循文件夹结构。

在您的描述中,您说您已经在控制器中创建了Test.php文件,该文件也位于名为“ frontend”的文件夹中,该文件夹也位于modules文件夹中的另一个文件夹“ test”中。

现在的诀窍是,如果您的控制器名称(Test.php)等于文件夹名称(test),则可以这样简单地调用它:

$route['test'] = "frontend/test/index"; 

代替此:

$route['test'] = "frontend/test/Test/index"; 

另一方面,您在名为User.php的文本文件夹中创建了另一个文件(或控制器),然后可以将路由设置为:

$route['test/user'] = "frontend/test/user/index"; 

然后再次在您的路径代码示例中,我注意到您尝试将大写字母用于“测试”,这并不重要,您可以使用小写的“测试”代替:$route['test'] = "frontend/test/test/index";但是请注意,这只是为了说明它是否区分大小写。

尝试一下,看看结果如何


0
投票

是的,这给你一个错误。因为您已在模块文件夹中创建了模块文件夹。

您必须在应用程序文件夹中创建模块文件夹,而不是在mx_loader application> modules中定义路径的另一个文件夹的内部,因此不会对该类代码进行罚款。

更改其目录并刷新它,以消除错误。

更多帮助使用这些链接:

http://www.dcaulfield.com/how-to-install-codeigniter-hmvc/

或者您可以直接从我的Gmail驱动器中下载:

https://drive.google.com/open?id=1Viyo7CQcjJNkBv5ahyiOs5RwwXiOVopg

下载并设置好后,点击网址:

http://localhost/hmvc/home

© www.soinside.com 2019 - 2024. All rights reserved.