【问题标题】:How to use a public method from a controller to another controller in codeigniter?如何在codeigniter中使用从控制器到另一个控制器的公共方法?
【发布时间】:2017-06-07 12:58:43
【问题描述】:

我有 2 个控制器,Listes.php 和 Campagnes.php。我想在campagnes 的方法中使用Listes 控制器中的方法,可以吗?是否可以给它传递一些参数?

我使用 Codeigniter 3。

我尝试了一些在这里找到的答案,但都没有奏效。

我也在campagnes.php 控制器中这个:

    include_once (dirname(__FILE__) . "/Listes.php");

     class Campagnes extends Listes {

       public function listes_recap()
       {
         $result = parent::add($parameter1, $parameter2);
       }

      }   

在 Listes.php 控制器中:

    class Listes extends CI_Controller {

     public function add($parameter1, $parameter2)
     {
       code here...
     }

    }

提前感谢您的帮助。

【问题讨论】:

  • 你试过$this->add($parameter1,$parameter2); ?

标签: php codeigniter


【解决方案1】:

有几种方法可以实现您想要的结果。但是从另一个控制器调用一个控制器不是要走的路。 “最佳”方法取决于两个控制器将使用的函数中实际发生的情况。

第一种方法是创建一个“帮助器”,每个控制器都会加载并使用它。

文件:/application/helpers/list_add_helper.php

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

if ( ! function_exists('add'))
{
    function add($parameter1, $parameter2)
    {
       code here...
    }
}

像这样在控制器中使用它

$this->load->helper('list_add');
$result = add($one, $two);

第二种方式是创建自定义库(类)

文件:/application/libraries/List_adder.php

class List_adder
{
    public function add($parameter1, $parameter2)
    {
       //code here
    }
}

用于任何控制器

$this->load->library('list_adder');
$result = $this->list_adder->add($one, $two);

如果您需要在自定义库中使用 CI 代码,则需要做更多工作。阅读所有相关信息HERE

【讨论】:

    【解决方案2】:

    从另一个控制器调用一个控制器方法不是一个好的编程策略

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2016-01-01
      • 2012-12-19
      • 1970-01-01
      • 2015-06-20
      • 2020-07-18
      • 2012-09-30
      • 2018-05-19
      • 1970-01-01
      相关资源
      最近更新 更多