用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3985|回复: 11
收起左侧

[已解决] controllers能呼叫function來用吗?

[复制链接]
发表于 2014-12-25 16:14:54 | 显示全部楼层 |阅读模式
想简化程式$data['XXX'],有办法直接用一个函数去呼叫就好了吗
类似 $XXX=new XXX();

controllers.php
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);
        }
 
 
[size=14px]
复制代码


发表于 2014-12-25 18:41:57 | 显示全部楼层
$this->test1() 你是这个意思吗?
 楼主| 发表于 2014-12-26 08:57:47 | 显示全部楼层
用过不行,想要类似php include的功能
发表于 2014-12-26 10:13:51 | 显示全部楼层
本帖最后由 Closer 于 2014-12-26 10:23 编辑

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

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

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

假如你是要,下面這段簡寫的話
PHP复制代码
 
$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


 
发表于 2014-12-26 12:00:14 | 显示全部楼层
 楼主| 发表于 2014-12-26 17:39:26 | 显示全部楼层
表达不清楚真是抱歉{:soso_e109:}...
发表于 2014-12-26 18:01:14 | 显示全部楼层
fastammo 发表于 2014-12-26 17:39
表达不清楚真是抱歉...

那就说说你的需求,不说代码。
 楼主| 发表于 2014-12-27 08:41:47 | 显示全部楼层
希望把重复呼叫的写到一个function来简化程式
发表于 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 完成

 
 楼主| 发表于 2014-12-27 17:17:07 | 显示全部楼层
多谢回覆与解释,鄙人写法跟概念不熟,还请多多见谅

本版积分规则