我正在codeignter3中实现HMVC。我已经在核心和第三方文件夹中添加了所有必需的文件。
我还创建了模块文件夹。在模块内部,我创建了前端文件夹在前端文件夹内部,我在其中创建了一个文件夹测试,我在里面创建了3个文件夹控制器、模型和视图。在controllers文件夹中,我创建了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);
}
}
?>
application/config/routes.php内部
$route['test'] = "frontend/test/Test/index";
当我通过localhost/myprojectfoldername/test访问它时,我得到了404
是的,这会给您一个错误。因为您已经在模块文件夹中创建了模块文件夹。
你必须在你的应用程序文件夹中创建模块文件夹,而不是在另一个文件夹中——路径是在mxloaderapplication>modules中定义的,所以代码不会被定义为类。
更改其目录并刷新它,以便删除错误。
进一步的帮助使用这些链接:
http://www.dcaulfield.com/how-to-install-codeigniter-hmvc/
或者你可以直接从我的gmail驱动器下载:
https://drive.google.com/open?id=1Viyo7CQcjJNkBv5ahyiOs5RwwXiOVopg
下载并设置后,点击网址:
http://localhost/hmvc/home
这样使用:
$route['some-route'] = "yourcontroller/yourmethod";
或者换句话说:
$route['user'] = 'user/login';
关于Codeigniter中的HMVC模式的一点是,您需要很好地遵循文件夹结构。
在你的描述中,你说你在控制器中创建了一个Test.php文件,该文件位于一个名为"frontend"的文件夹中,该文件夹也位于模块文件夹中的另一个文件夹"Test"中。
现在这里的技巧是,如果你的控制器名称(Test.php(等于文件夹名称(Test(,你可以简单地这样调用它:
$route['test'] = "frontend/test/index";
取而代之的是:
$route['test'] = "frontend/test/Test/index";
另一方面,假设您在名为User.php的文本文件夹中创建了另一个文件(或控制器(,然后您可以将您的路由设置为:
$route['test/user'] = "frontend/test/user/index";
在你的路由代码示例中,我注意到你试图使用大写字母表示"Test",这并不重要,你可以只使用小写字母"Test":$route['test'] = "frontend/test/test/index";
但请注意,这只是为了解释它是否区分大小写。
试试你的手,让我们看看的结果