CodeIgniter - 多个控制器中可用的功能

Posted

技术标签:

【中文标题】CodeIgniter - 多个控制器中可用的功能【英文标题】:CodeIgniter - functions available in multiple controllers 【发布时间】:2011-07-27 08:43:48 【问题描述】:

我对 CodeIgniter 比较陌生,到目前为止,我的项目完全是使用控制器和视图创建的。然而,随着它变得越来越复杂,我发现我已经将某些功能复制粘贴到多个控制器中——这并不理想,因为编辑一个需要记住编辑所有其他的。

有很多我一无所知的 CI 功能 - 模型、助手、扩展“控制器”等等。我应该在哪里寻找以完成上述任务?我想我也可以直接import() 一段代码,虽然我觉得这不是“CodeIgniter 方式”。

【问题讨论】:

【参考方案1】:

将所有“实用程序”功能放入“帮助管理器”并访问它。

http://codeigniter.com/user_guide/general/helpers.html

【讨论】:

感谢您的链接。这篇文章没有说明如何创建我自己的助手。是否像在 以“MY_”开头的 helpers 文件夹中创建文件一样简单? 如果加载两个具有相同函数名的助手会发生什么?调用时会执行哪个函数? 您应该扩展具有相同函数名称的“Helper”(即 MY_array_helper.php)。如果你不这样做,我不确定,但很可能它会调用 PHP 中最后定义的方法。【参考方案2】:

或者创建一个基本控制器,并从中扩展其他控制器。

我确信 Phil Sturgeon 对此有指导:http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY

【讨论】:

菲尔对一切都有指导【参考方案3】:

base_controller.php

<?php
class Base_Controller extends CI_Controller 
    function __construct()
    
        parent::__construct();
    
    function base_function()

        

?>

other_controller.php

<?php
require_once('base_controller.php');
class Other_Controller extends Base_Controller
    function __construct()
    
        parent::__construct();
    
    function index()
    
    $this->base_function(); 
    

?>

【讨论】:

以上是关于CodeIgniter - 多个控制器中可用的功能的主要内容,如果未能解决你的问题,请参考以下文章

在 codeigniter 中扩展多个核心控制器

在codeigniter视图中嵌套foreach

如何在codeigniter中上传多个/多个图像[重复]

如何从视图中调用 codeigniter 控制器功能

CodeIgniter 控制器功能未触发

在 Codeigniter 中上传多个文件并更改名称文件