CodeIgniter将参数传递给CORE MY_Controller中的函数

时间:2013-06-11 16:55:29

标签: php html codeigniter codeigniter-routing

我希望这是可能的

我可以将参数传递给CORE / MY_Controller中的函数吗?

我正在开发一个具有三个控制器的应用程序,并且大多数功能是相同的,所以我想编写函数,并在需要时在他们可敬的控制器中再次使用它们。

像search_User_Name()这样的函数将在两个控制器中,如果我可以编写一次并重复使用它将会很酷。我目前面临的问题是

  1. MY_Controller.php与其他控制器不在同一个文件夹中
  2. search_User_Name()函数必须接收search_User_Name($ var1,$ var2)等参数
  3. 我在核心文件夹中有一个控制器作为MY_Controller

    class MY_Controller extends CI_Controller{
    
        public function __construct() {
                 parent::__construct();
        }
    
        public function Testing($var){
         $function_var= $var;
         return $function_var;
       }
    }
    

    我在控制器文件夹中有一个控制器作为Sub_Controlller

    class Sub_Controller extends MY_Controller{
        public function __construct() {
            parent::__construct();
        }
    
        public function Show(){
            echo($this->Testing());
        }
    }
    

    在我有

    的视图上
    echo anchor('Sub_Controller/Show/Parameter','Pass a parameter');
    

    根据我的理解,我是配偶在屏幕上得到“参数”这个词。 有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

它可以正常工作,但你仍然需要传递参数:

class Sub_Controller extends MY_Controller {
    public function Show($arg = null) {
        echo($this->Testing($arg));
    }
}

或者,您可以从基本函数中读取URI段,但是您可以控制较少:

class MY_Controller extends CI_Controller {
    public function Testing() {
        $function_var = $this->uri->segment(2);
        return $function_var;
   }
}
class Sub_Controller extends MY_Controller {
    public function Show() {
        echo($this->Testing()); // prints the argument in the URL
    }
}

第一种方式更好。