如何为控制器中的所有方法存储$ data数组

时间:2014-03-11 05:09:23

标签: php arrays codeigniter dry

我有一些数据数组,我需要控制器中的所有方法。

          $data['project_ongoing_res_limit']=$this->admin_model->show_project_ongoing_residential_limit();
          $data['project_ongoing_com_limit']=$this->admin_model->show_project_ongoing_commercial_limit();

          $data['project_upcoming_res_limit']=$this->admin_model->show_project_upcoming_residential_limit();
          $data['project_upcoming_com_limit']=$this->admin_model->show_project_upcoming_commercial_limit();

          $data['project_completed_res_limit']=$this->admin_model->show_project_completed_residential_limit();
          $data['project_completed_com_limit']=$this->admin_model->show_project_completed_commercial_limit();

问题是我不能DRY这个。所以我在每个方法中都粘贴了这个$ data数组。

  

我有一个视图页面。所以当我加载这个视图时,我必须这样做   每次/方法加载$ data数组。控制器时这很恶心   方法太多了。

我想要1个像构造函数这样的代码。我怎么能这样做。

3 个答案:

答案 0 :(得分:0)

你可以使用这个特征。 在特征中定义方法,然后在控制器中使用特征。

答案 1 :(得分:0)

您可以在helper class中创建一个function并将上面的代码放入其中,但请确保您无法使用model访问$this所以,您需要创建CI instance而不是访问它。在controller construct方法中,您只需要调用此函数,但不要忘记加载helper class并将其存储在变量中并将其与{{1}一起传递}}

答案 2 :(得分:0)

只需在控制器类中创建私有数据变量即可。比在构造函数中设置数据。现在,您可以使用任何方法访问数据。

class Pages extends CI_Controller {
    // ...
    private $data;
    // ...
    public function __construct() {
        parent::_construct();

        $this->data = array();

        $this->data['project_ongoing_res_limit']=$this->admin_model->show_project_ongoing_residential_limit();
        $this->data['project_ongoing_com_limit']=$this->admin_model->show_project_ongoing_commercial_limit();

        $this->data['project_upcoming_res_limit']=$this->admin_model->show_project_upcoming_residential_limit();
        $this->data['project_upcoming_com_limit']=$this->admin_model->show_project_upcoming_commercial_limit();

        $this->data['project_completed_res_limit']=$this->admin_model->show_project_completed_residential_limit();
        $this->data['project_completed_com_limit']=$this->admin_model->show_project_completed_commercial_limit();
    }
    // ...
}