fastammo 发表于 2014-12-25 16:14:54

controllers能呼叫function來用吗?

想简化程式$data['XXX'],有办法直接用一个函数去呼叫就好了吗
类似 $XXX=new XXX();

controllers.php
        public function test_1()
        {
                $data['XXX1'] =$this->test_model->XXX1();
                $data['XXX2'] =$this->test_model->XXX2();
                $data['XXX3'] =$this->test_model->XXX3();
               
                $data['test_1'] =$this->test_model->XXX3();
                $this->load->view('test', $data);
        }
        public function test_2()
        {
                $data['XXX1'] =$this->test_model->XXX1();
                $data['XXX2'] =$this->test_model->XXX2();
                $data['XXX3'] =$this->test_model->XXX3();
               
                $data['test_2'] =$this->test_model->XXX3();
                $this->load->view('test', $data);
        }
        .......
        public function test_N()
        {
                $data['XXX1'] =$this->test_model->XXX1();
                $data['XXX2'] =$this->test_model->XXX2();
                $data['XXX3'] =$this->test_model->XXX3();
               
                $data['test_N'] =$this->test_model->XXX3();
                $this->load->view('test', $data);
        }




Hex 发表于 2014-12-25 18:41:57

$this->test1() 你是这个意思吗?

fastammo 发表于 2014-12-26 08:57:47

用过不行,想要类似php include的功能

Closer 发表于 2014-12-26 10:13:51

本帖最后由 Closer 于 2014-12-26 10:23 编辑

有時真的很難搞清你要的需求...
你一開始的問題需求應該比較像 Hex 說的
以控制器呼叫方法來用:$this->test1()

如果要用的是 include
參考看看 Hex 簽名檔的視圖繼承類庫
應該那個比較有相關

若只是要 view 值,手冊的最下面有介紹
參考:CI手冊 - 視圖

假如你是要,下面這段簡寫的話

$data['XXX1'] =$this->test_model->XXX1();
$data['XXX2'] =$this->test_model->XXX2();
$data['XXX3'] =$this->test_model->XXX3();
$data['test_1'] =$this->test_model->XXX3();
那請自己把它封裝到同一個 model 內的方法,以陣列回傳 controller
或是在 models 內呼叫其他方法,整理完以陣列回傳 controller


 

aqxinzhuan 发表于 2014-12-26 12:00:14

楼主说的是辅助函数吗?
http://codeigniter.org.cn/user_guide/general/helpers.html

fastammo 发表于 2014-12-26 17:39:26

表达不清楚真是抱歉{:soso_e109:}...

Hex 发表于 2014-12-26 18:01:14

fastammo 发表于 2014-12-26 17:39
表达不清楚真是抱歉...

那就说说你的需求,不说代码。

fastammo 发表于 2014-12-27 08:41:47

希望把重复呼叫的写到一个function来简化程式

Closer 发表于 2014-12-27 09:47:51

本帖最后由 Closer 于 2014-12-27 10:25 编辑

fastammo 发表于 2014-12-27 08:41
希望把重复呼叫的写到一个function来简化程式
你的要求基本就兩個方向:
1. 同控制器呼叫共用的函數
2. 不同控制器呼叫共用的函數

第一種就 Hex 說的,$this->test(); 這樣呼叫
第二種則是我上面提的最後一項,寫入 model 後整理完陣列輸出

如果你是在想能不能控制器呼叫控制器,答案是不行的
若他是控制器就代表客戶端也可以依靠連結來查看數據,其實這並不安全
所以 CI 沒有允許這種情況發生

而 model 不只是與數據庫的橋樑
也可以封裝一些方法 (ex. 驗證碼, 批量上傳 ... )
用 model 可以做的事情,實在是不太需要去用 controller 完成

 

fastammo 发表于 2014-12-27 17:17:07

多谢回覆与解释,鄙人写法跟概念不熟,还请多多见谅
页: [1] 2
查看完整版本: controllers能呼叫function來用吗?