0

我正在使用 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)是我传递的值。

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

4

2 回答 2

2

在 Codeigniter 3 中,您还可以使用方法重置视图中的变量

$this->load->clear_vars();

在文档中查看

于 2016-04-20T07:09:04.480 回答
1

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

<?php $this->load->view('podium_view', array('tracks' => $longest_distance, 'unit' => 'km', 'function'=>'')) ?>
于 2012-10-21T22:35:04.983 回答