如何在codeigniter中使用从控制器到另一个控制器的公共方法?

时间:2017-06-07 12:58:44

标签: php codeigniter

我有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...
     }

    }

先谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

有几种方法可以达到您想要的效果。但是从另一个控制器调用一个控制器不是要走的路。最好的"这样做的方式取决于两个控制器将使用的函数实际发生的情况。

第一种方法是创建一个"帮助"每个控制器将加载然后使用。

档案:/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);

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

file:/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

答案 1 :(得分:0)

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

相关问题