在 CodeIgniter 中扩展 HMVC 模块

2023-12-23

假设我们有一个名为core_crud在控制器中使用类似的内容:

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Core_crud extends MX_Controller
{

    function __construct()
    {
        parent::__construct();
        $this->load->model('mdl_core_crud');
    }

    public function index()
    {
        // code goes here
    }

}

现在我想用另一个名为的模块扩展这个模块shop_crud。基本控制器如何实现这一点shop_crud模块长什么样?我的意思是我想继承所有控制器方法core_crud以及所有模型的东西。


模块结构

/modules
    /core_crud
        /controllers
            /core_crud.php
        /models
        /views
    /shop_curd
        /controllers
            /shop_crud.php
        /models
        /views

Code in core_crud.php

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Core_crud extends MX_Controller
{

    function __construct()
    {
        parent::__construct();
        $this->load->model('mdl_core_crud');
    }

    public function index()
    {
        // code goes here
    }

    public function mymethod($param1 = '', $param2 = '')
    {
        return 'Hello, I am called with paramaters' . $param1 . ' and ' . $param2;
    }

}

Code in shop_crud.php

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Shop_crud extends MX_Controller
{

    public function __construct()
    {
        parent::__construct();
        //$this->load->model('mdl_shop_curd');
    }

    public function testmethod()
    {
        // output directly
        $this->load->controller('core_crud/mymethod', array('hello', 'world'));

        // capture the output in variables
        $myvar = $this->load->controller('core_crud/mymethod', array('hello', 'world'), TRUE);
    }

}

因此,我宁愿只调用所需的方法,而不是扩展整个模块/控制器。这也很简单。

Note如果模块名称和控制器名称不同,则必须传递路径

module_name/controller_name/mymethod

编辑以支持扩展

文件结构

代码在core_crud.php.

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Core_crud extends MX_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->model('core_crud/mdl_core_crud');
    }

    public function index()
    {
        return 'index';
    }

    public function check_method($param1 = '')
    {
        return 'I am from controller core_crud. ' . $this->mdl_core_crud->hello_model() . ' Param is ' . $param1;
    }

}

代码在mdl_core_crud.php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class mdl_core_crud extends CI_Model
{

    public function hello_model()
    {
        return 'I am from model mdl_core_crud.';
    }

}

代码在shop_crud.php.

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

include_once APPPATH . '/modules/core_crud/controllers/core_crud.php';

class Shop_crud extends Core_crud
{

    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {
        echo parent::check_method('Working.');
    }

}

输出:- 我来自控制器 core_crud。我来自模特 mdl_core_crud。参数正在工作。

希望这可以帮助。谢谢!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CodeIgniter 中扩展 HMVC 模块 的相关文章

  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • 检查php中位字段是否打开的正确方法是什么

    检查位字段是否打开的正确方法是什么 在 php 中 我想检查来自 db mysql 的位字段是否打开 这是正确的方法吗 if bit 1 还有其他方法吗 我看到有人使用代码ord http jameslow com 2008 08 12 m
  • Laravel 从 5.6 升级到 Laravel 6

    我有一个项目https github com javedbaloch4 Laravel Booking https github com javedbaloch4 Laravel Booking发展于Laravel 5 6现在我想将其升级到
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • 在 php 中为类自动生成 getter 和 setter 的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常创建一个包含一些私有变量的类 当设置此类的实例时 应该可以使用 getter 和 setter 填充该类的所有变量 有没有一种简单的方法可
  • 生成大随机数 php [重复]

    这个问题在这里已经有答案了 我想使用 PHP 生成一个包含 75 个字符的数字 我到处寻找 但一无所获 除了这个 http dailycoding com tools RandomNumber aspx http dailycoding c
  • 蛋糕控制台 2.2.1:烘焙错误

    运行 MAMP 的 OSX 机器 CakePHP 2 2 1 已正确安装和配置 这意味着当我浏览到 Index php 文件时 所有绿色条都显示出来 我已经完成了博客教程 并且正在开发我的第二个应用程序 其中脚手架已启动并运行 现在我第一次
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • 有人可以举一个更好的例子来说明脆弱的基类问题吗?

    脆弱基类是每次讨论中通过实现继承讨论可重用性时最常见的问题之一 除了常见的正方形 矩形示例之外 有没有人遇到过任何真正的问题 每当我需要向某人解释这一点时 我都会陷入一些现实世界的案例中 这些案例引起了这些问题以及如何解决这个问题 如果有人
  • 对 OAuth2 库与 Jersey 集成的建议? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在努力使用 OAuth2 向其他客户端提供 Jersey Web 服务 但很难找到与 Jersey
  • 无回复请求的 ZMQ 模式

    我使用 ZMQ 允许客户端连接到服务器并向其发送命令 命令传入的频率很高 不需要任何回复 我正在考虑使用 REQ REP 套接字 但发送空回复感觉很浪费 我不想使用 PUB SUB 或 PUSH PULL 因为我希望客户端启动连接 是否有比
  • Django MTMField:limit_choices_to = other_ForeignKeyField_on_same_model?

    我有几个 django 模型 如下所示 from django contrib sites models import Site class Photo models Model title models CharField max len
  • 从 pandas 系列中删除 NaN

    有没有办法从 panda 系列中删除 NaN 值 我有一个系列 其中可能有或没有一些 NaN 值 我想返回该系列的副本 其中删除了所有 NaN gt gt gt s pd Series 1 2 3 4 np NaN 5 np NaN gt
  • 为什么除了一个窗口之外的所有窗口的 Process.MainWindowTitle 始终为空?

    当访问 Process MainWindowTitle 时 如下所示 Process processes Process GetProcessesByName iexplore 然后循环生成的数组 我总是得到MainWindowTitle数
  • 存在多个获取操作时的 MVC API 路由

    似乎有一千人在堆栈溢出上问同样的问题 但似乎没有一个单一的解决方案来解决这个问题 我要再问一遍 我有一个 API 控制器 具有以下操作 GET api Exploitation public HttpResponseMessage Get
  • 是否有任何预先构建的方法可以在 JavaScript 中查找给定字符串的所有排列?

    我是 JavaScript 世界的新手 正如标题所提到的 我想知道 JavaScript 中是否有任何预先构建的方法来查找给定字符串的所有可能排列 例如 给定输入 the 期望的输出 the teh eht eth het hte stri
  • SQL JOINS - 我的研究中的报告相互矛盾,或者我误解了?

    我是一个新手 正在对 SQL 中的 JOINS 进行一些研究 我被引导到这个优秀的线程 INNER 和 OUTER 连接之间的区别 https stackoverflow com questions 38549 difference bet
  • OSX Lion 升级后 perl“.../config.h,`Makefile' 需要”不工作

    SOLVED 见底部 刚刚升级到 OSX Lion 并尝试让我的 Perl 安装再次运行 sudo usr bin perl MCPAN e install MODULENAME 具有任意值MODULENAME我尝试过的 例如JSON 产生
  • 如何在 shell 脚本中检测 BSD 与 GNU 版本的日期

    我正在编写一个需要执行一些日期字符串操作的 shell 脚本 该脚本应该跨尽可能多的 nix 变体工作 因此我需要处理机器可能具有 BSD 或 GNU 版本的 date 的情况 测试操作系统类型的最优雅的方法是什么 以便我可以发送正确的日期
  • 如何在 JavaScript 中禁用重复按键[重复]

    这个问题在这里已经有答案了 我和这个人有同样的问题如何禁用 jQuery 中的重复按键 https stackoverflow com questions 9098901 how to disable repetitive keydown
  • Eclipse Maven 依赖项未找到

    我已添加到项目存储库的 pom xml 中
  • Swing - 替代 Qt 信号/槽

    在 Qt GUI 中 使用信号和槽非常方便 它解耦事件传递 当我创建一些抛出信号的小部件时 我不必提前知道谁可以获取它 然后使用connect我指定连接 Java Swing 中什么是并行 您能指出关于这个问题的好资源吗 如果没有现有的Ev
  • 在 Jade 中快速显示 mongodb 文档

    我正在学习 Node Express Jade 和 Mongodb 我无法在 jade 中显示我的 mongodb 文档 我自己无法弄清楚 我已使用 console log 成功记录所有文档 并且它正确显示所有文档 请不要使用猫鼬或其他解决
  • 如何在 ruby​​ 上的哈希中创建 deep_slice

    我正在寻找一种干净的方法来执行此操作 我找到了一些解决方法 但没有找到类似切片的东西 有些人建议使用 gem 但我认为此操作不需要 如果我错了 请纠正我 所以我发现自己有一个包含一堆哈希值的哈希值 我想要一种方法来执行Slice https
  • 更改每个文件的下载位置和名称

    我正在使用 Selenium 和 Chrome WebDriver 进行自动化 该应用程序必须执行一系列下载 需要使用不同的名称 数据 报告类型 和与我正在下载的报告类型匹配的文件夹进行保存 问题是我只能在实例化新驱动程序时设置默认目录 v
  • spring 2.5中基于注解的配置和基于xml的配置可以一起使用吗?

    我一直在从事一个项目 其中控制器是为了扩展控制器类而编写的 我可以在同一应用程序中配置和使用基于 POJO 的控制器 使用 Controller 吗 非常感谢 感谢 jamestastic 和 skaffman 现在一切正常 以下是需要添加
  • 无法在 Windows 8 应用程序内创建动态磁贴

    我的要求是在应用程序页面之一内创建动态磁贴 但现在我能够创建仅驻留在 Windows 8 平板电脑的开始屏幕中的图块 但我需要在应用程序内创建一个图块 我使用的环境 Visual Studio 2011 测试版 其针对平板电脑的 Windo
  • 在 CodeIgniter 中扩展 HMVC 模块

    假设我们有一个名为core crud在控制器中使用类似的内容 if defined BASEPATH exit No direct script access allowed class Core crud extends MX Contr