HMVC和文件夹中的视图(Codeigniter)

3
我正在使用Codeigniter的HMVC架构中的Tank Auth库,整个Tank Auth MVC文件都在其自己的模块中,名为“auth”。Tank Auth使用以下方式加载一个视图(位于domain.com/application/modules/auth/views/auth/login_form.php中的文件夹(auth)内):
$this->load->view('auth/login_form', $data);

据我所知,上述代码将在没有HMVC的情况下正确加载位于auth文件夹内的login_form.php。但是,在使用HMVC时,我需要以下代码才能使视图加载:
$this->load->view('auth/auth/login_form', $data);

有没有设置可以更改,这样我们就不必通过(模块名称)/(视图文件夹名称)/(视图文件名)引用视图文件?还是这是完全正常的做法,大多数人都这样做?
似乎很麻烦,我必须在每个view()函数调用中添加模块文件夹名称“auth”,并且如果我更改模块文件夹的名称,则需要更改所有内容。
1个回答

3
假设您正在使用Modular Extensions - HMVC
如果您已经将auth设置为模块,则只需调用:
$this->load->view('login_form', $data);

将从当前模块中加载文件/views/login_form.php。这适用于模型、语言文件、库等。把模块看作是它自己的应用程序,这通常是您要做的。

此外,要从另一个模块或模块目录之外的控制器加载文件,可以使用$this->load->view('auth/login_form');

如果找不到文件,它将检查其他模块路径,包括默认目录。我不确定其他HMVC软件包是否是这种方式 - 但这是MX的方式。


我已经按照 https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home 上的12步安装了HMVC。我需要做额外的事情来设置auth作为一个模块吗?auth已经在modules文件夹中,连同其视图和控制器等。我读到了关于扩展MY_controller的内容,但我目前是扩展CI_controller,这会有影响吗? - Nyxynyx
顺便说一下,我正在尝试在“auth”模块中加载/views/auth/login_form.php。目前似乎只能使用$this->load->view('auth/auth/login_form', $data);来调用它。 - Nyxynyx
你在一个模块中是否拥有所有的授权文件,或者有些文件仍然在默认目录中?为了确保:你是从授权模块内的控制器调用它吗?为什么在auth/views/中有一个名为auth的子目录?你不需要它,将视图文件直接移动到模块内的/views中即可。 - Wesley Murch
在视图中有一个名为“auth”的子目录,因为视图中还有另一个名为“email”的子目录,以区分身份验证视图和电子邮件模板等内容... 这些子目录是随着tank_auth库一起提供的。 - Nyxynyx
好的,我将它们从视图中的auth子目录中移除。问题解决了。谢谢! - Nyxynyx
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接