CodeIgniter:所有视图中的$ data访问

时间:2019-01-21 12:35:11

标签: php codeigniter

在所有视图中,我都需要在整个站点中访问$ data []变量。我创建了TestLeangue控制器,并为$ data分配了一些值,但在所有视图中都说未定义变量

    class TestLanguage extends MY_Controller
{
    public function __construct() {
        parent::__construct();
        $this->lang->load("menu","english");
    }

    function index() {
        $data['shipping'] = $this->lang->line('menu_shipping');
        $this->load->view('templates/navigation', $data);
    }
}

我回声说我有未定义的变量。

<?= $shipping; ?>

2 个答案:

答案 0 :(得分:0)

使用$ data的索引作为变量名( $ shipping ),以获取已分配为$data['shipping']的值

控制器

class TestLanguage extends MY_Controller
{
    public function __construct() {
        parent::__construct();
        $this->lang->load("menu","english");
    }

    function index() {
        $data['shipping'] = $this->lang->line('menu_shipping');
        $this->load->view('templates/navigation', $data);
    }
}

查看:模板/导航

<?php 
print_r($shipping);
?> 

答案 1 :(得分:0)

为什么不像全局变量那样使用这些数据?

class MY_Controller extends ...
{
    protected $data = [];
}

然后,每次扩展自定义控制器时,您都可以访问常规数据。

class MyCustomStackOverflowController extends MY_Controller
{
    public function index()
    {
       $this->load->view('index', $this->data);
    }
}

此外,您可以使用$this->data向其加载当前控制器的常规信息,例如:

class MyCustomStackOverflowController extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();

        $this->data['title'] = 'Stackoverflow';
    }

    public function index()
    {
           ...
    }
}
相关问题