我有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...
}
}
先谢谢你的帮助。
答案 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)
从另一个控制器调用一个控制器方法不是一个好的编程策略