我如何存储$data数组的所有方法在一个控制器


how can I store $data array for all methods in a controller

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

          $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();

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

我有一个查看页面。当我加载这个视图时,我必须每次/方法加载以上$data数组。这太恶心了方法太多了。

我想要一段类似构造函数的代码。

你可以使用trait。在trait中定义方法,然后在控制器中使用该trait。

您可以创建一个helper class,其中创建一个function,并将您的上述代码放在其中,但确保您不能使用$this访问model,因此,您需要创建CI instance,然后访问它。之后,在construct方法中的controller中,您只需要调用此函数,但不要忘记加载helper class并将其存储在一个变量中,并将其与view一起传递。

在控制器类中创建私有数据变量。然后在构造函数中设置数据。现在你可以用任何你想要的方法访问你的数据。

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();
    }
    // ...
}