我正在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
像这样使用:
$route['some-route'] = "yourcontroller/yourmethod";
或换句话说:
$route['user'] = 'user/login';
关于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";
但是请注意,这只是为了说明它是否区分大小写。
尝试一下,看看结果如何
是的,这给你一个错误。因为您已在模块文件夹中创建了模块文件夹。
您必须在应用程序文件夹中创建模块文件夹,而不是在mx_loader application> modules中定义路径的另一个文件夹的内部,因此不会对该类代码进行罚款。
更改其目录并刷新它,以消除错误。
更多帮助使用这些链接:
http://www.dcaulfield.com/how-to-install-codeigniter-hmvc/
或者您可以直接从我的Gmail驱动器中下载:
https://drive.google.com/open?id=1Viyo7CQcjJNkBv5ahyiOs5RwwXiOVopg
下载并设置好后,点击网址: