首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codeigniter HMVC资产管理

Codeigniter HMVC资产管理
EN

Stack Overflow用户
提问于 2013-09-14 10:39:16
回答 2查看 1.9K关注 0票数 1

我正试着在Codeigniter中给HMVC一个机会。这是我的文件夹结构。

代码语言:javascript
复制
-ROOT
--APPLICATION
---MODULES
----Module_Email
-----Controllers
-----Models
-----Views
-----Assets
------JS
------CSS
------IMG

要渲染模块,我必须使用

代码语言:javascript
复制
Module::run('Module_Email');

此方法将输出呈现的输出,下面给出了一个示例

代码语言:javascript
复制
<script type="text/javascript" src="PATH/TO/EMAIL_MODULE/JS/JS_FILE.JS"></script>
<div data-module-name="Module_Email" class="Email_wrapper">

  //RENDERED HTML CONTENT 

</div>

现在我的问题开始了。通常,我想把我所有的资源都放在头上。因此,当我调用任何模块时,需要将其依赖添加到标头中,而不是从调用它的位置添加。

我找了很多,但找不到任何好的方法。

请帮帮忙。

更新

目前,我的头上有一个名为get_assets()的函数,它将向标头输出预定义的资源。但是我不能说哪些模块将在页面中使用,因此系统需要检查在这个页面中使用了哪些模块,如果使用了这些模块,则需要在标头上添加它的依赖项。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-18 04:39:31

我向Module类添加了一个数组来存储资产,并添加了两个函数来存储/检索项。以下是源代码(更新的Modules.php)

代码语言:javascript
复制
        # Register your assets
        public static function register_asset( $asset )
        {
           if( in_array($asset,self::$assets) === FALSE )
           {
              self::$assets[] = $asset;
           }
        }

       public static function assets()
       {
             return self::$assets;
       }

现在,您可以像这样在模块中注册资产。

代码语言:javascript
复制
Modules::register_asset('myslider.js');

可以使用以下方法检索所有资产

代码语言:javascript
复制
Modules:assets();

它将返回一组可根据情况处理的资产。

票数 0
EN

Stack Overflow用户

发布于 2013-09-17 01:35:55

似乎你的主要问题是试图找出哪些模块被使用。

不幸的是,据我所知,默认的Wiredesignz模块扩展无法访问模块名,除非您编写某种黑客来获取该数据。所使用的模块存储在MX_Router类中的受保护变量MX_Router中,但是没有允许您访问它的公共方法。因此,您唯一的选择是扩展类并创建一个公共函数。

或者,您可以使用Wiredesignz实现的分叉版本,这是我所做的,它提供了许多其他特性,包括一个公共函数来获取$module变量。使用我编写的分叉版本,您可以使用如下代码:

代码语言:javascript
复制
<?php $module_name = $this->router->fetch_module(); ?>

但是,这只会记录您加载的最后一个模块,因此您仍然需要做一些工作来存储所有模块,然后让您的函数使用这些信息来确定要加载的资产。如果我在做类似于您的事情,我可能会对我的版本进行分叉,然后创建一个额外的数据结构来存储每个加载的模块,然后您可以访问这些模块。

我不认为这正是你所期望的,但可能会让你走上正确的轨道,找到一个解决方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18800880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档