【问题标题】:Automatically pass data variable to view in code igniter自动传递数据变量以在 codeigniter 中查看
【发布时间】:2013-09-23 12:48:48
【问题描述】:

我有一个扩展 CI_Controller 的控制器类:

class Admin_Controller extends CI_Controller {      
    var $data;

    function __construct () {
        parent::__construct ();

        $this->load->model ('loginm');

        if(!$this->loginm->is_login_admin ())
            redirect (base_url ('admin_login'));

        $this->data['page_title'] = 'Default page title';
        $this->data['page_url'] = $this->uri->segment (2);
    }
}

在扩展这个的其他类中,我必须将 $this->data 变量传递给我在方法中调用的每个视图。是否有一些技巧或配置允许我在调用 $this->load->view('viewname', $this->data) 时自动传递 this->data 变量而不每次都传递它?每次调用 this->load->view 时通过都不是什么大问题,但如果我可以跳过它会更好。

【问题讨论】:

  • 不公平,这就是 CI 糟糕的地方。使用 laravel,这些基本的事情变得如此简单......
  • @itachi,现在,我们不要开始框架战争了。
  • @MaximKumpan 我同意,但在这种情况下,可以建议由于 CI 的未来不确定,是时候转向新框架了。

标签: php codeigniter variables


【解决方案1】:

您可以在 Admin_Controller 中编写一个函数来包装 $this->load->view() 方法

public function loadView($viewname) {
   $this->load->view($viewname, $this->data);
}

那就打电话$this->loadView('viewname');

【讨论】:

    【解决方案2】:

    您可以重载CI_Loader core class 并为您的视图函数添加一个包装器,并将通用数据生成移至一个辅助函数。

    就个人而言,我总是创建 MY_Loader::site_view($view, $data)MY_Loader::admin_view($view, $data) 函数来显示页眉和页脚,分别用于站点和管理页面。可选地,它们还显示由助手生成的常见数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 2016-07-27
      • 2016-03-29
      相关资源
      最近更新 更多