Codeigniter,在视图内部加载视图,每次都不会重置变量

时间:2012-10-21 22:03:59

标签: php codeigniter

我正在使用Codeigniter的最新稳定版本。

这是控制器的一部分:

$data = array(
    'tracks' => $this->tracks_model->get(NULL, 'start_date'),
    'longest_distance' => $this->tracks_model->get(10, 'distance'),
    'longest_time' => $this->tracks_model->get(10, 'moving_time') 
);

$this->load->view('statistics_view', $data);

这里是文件statistics_view.php中的部分代码:

<section>

    <h3>Section 1</h3>

    <?php $this->load->view('podium_view', array('tracks' => $longest_time, 'unit' => 'ore', 'function' => 'minutes_to_hours')) ?>

</section>

<section>

    <h3>Section 2</h3>

    <?php $this->load->view('podium_view', array('tracks' => $longest_distance, 'unit' => 'km')) ?>

</section>

我注意到在第二个加载的视图(第2部分内部)中,变量$ function仍然是从第1部分设置的,其他值(traks,unit)是我传递的值。

为什么在第二个视图中仍然设置变量函数? 不应该重置?

2 个答案:

答案 0 :(得分:2)

在Codeigniter 3中,您还可以使用方法

在视图中重置变量
$this->load->clear_vars();

See it in documentation

答案 1 :(得分:1)

Codeigniter使用extract来转换您传递的变量数组 见http://php.net/manual/en/function.extract.php Extract继续向符号表添加变量,视图仅包含在PHP文件中。 因此变量范围是相同的,您可以访问早期定义的所有变量。如果发现冲突,则提取的默认行为是覆盖。 如果要重置,则必须传递一些值。

<?php $this->load->view('podium_view', array('tracks' => $longest_distance, 'unit' => 'km', 'function'=>'')) ?>