CI将视图中接收到的变量数组传递给另一个视图


CI Pass the received variables array in a view to another view

我目前正在从控制器加载我的页眉,页脚和内容视图,像这样:

$data = array('first' => 1, 'second' => 2);
$this->load->view('header', $data);
$this->load->view('CRUD/reports', $data);
$this->load->view('footer', $data);

我如何将"$data"数组从"CRUD/reports"视图传递到页眉和页脚,这样我就可以像这样从控制器加载主内容视图:

$this->load->view('CRUD/reports', $data);

我最终使用了变量$_ci_vars,它在我的场景中可用于CRUD/reports视图。然后从视图中加载页眉和页脚,如下所示:

$this->load->view('header', $_ci_vars);
$this->load->view('header', $_ci_vars);

你总是可以在视图文件中加载页眉和页脚或者你可以创建这样的函数:

function get_header($data, $return = false, $view = "header") {
    $ci = & get_instance();
    $ci->load->view($view, $data, $return);
}

然后在你的数据中创建一个$data->头值,并将它们传递给视图文件中的函数,如:

// View file
<?php get_header($header);?>
// Other content of the file

您可以在您的"CRUD/reports"视图中加载页眉和页脚,而不是在控制器中加载,使用

$this->load->view('header');
//Your "CRUD/reports" content
$this->load->view('footer');

你可以发送你的"data"数组中的所有变量,如下所示

$this->data['variable1'] = 'values';
$this->data['variable2'] = 'values';

然后按如下方式加载视图

$this->load->view('CRUD/reports', $data);

现在我使用的是PARSER

控制器

<?php
    $template = array(
        'title'=>'My invoices',
        'headerinc'=>load_css('data-tables/DT_bootstrap', 'plugins'),
        'footerinc'=>load_js('jquery.dataTables', 'plugins'), FALSE),
        'content'=>$CI->load->view("invoice/visualize", $data, TRUE)
    );
    
    $CI->parser->parse($CI->load->view['template'], $template); 
?>

主视图 (view template.php)

<html>
    <head>
        {headerinc}
    </head>
    <body>
        {content}
        <script src="js/jquery.js"></script>
        {footerinc}
    </body>
</html>

在这种形式下,你的网站将始终保持相同的风格,只是改变内容=)