使用CodeIgniter是在循环中加载视图的不良做法

时间:2009-11-12 21:51:22

标签: php codeigniter loops include

我刚刚开始使用CodeIgniter,我想知道如果我把这样的代码放在循环中会减慢速度。

    $data['title'] = 'the title';
    $data['content'] = 'blah blah blah';
    $this->load->view('result', $data);

我不完全确定CodeIgniter如何处理事情,或者PHP本身。例如,如果我这样做。是否会在每次迭代时读取文件?

    $data['title'] = 'the title';
    $data['content'] = 'blah blah blah';
    include 'result.php';

也可以在循环中加载控件,或者通过将控件放在循环中我缺少一些基本的东西?感谢。

其他信息。 我有用户个人资料的搜索结果...我正在考虑在搜索结果页面上显示简介视图的精简版本。使用视图是不好的做法?

3 个答案:

答案 0 :(得分:3)

我不建议您从您的视图中调用您的模型。在尝试遵守MVC框架标准时,这不是最佳实践。从控制器调用模型,并将“users”数组作为$ data的一部分传递给视图。现在,您可以在视图中作为变量访问$ users数组。与您所拥有的类似,但这可以将模型访问回控制器。

控制器

$data['title'] = 'the title';
$data['content'] = 'blah blah blah';
$data['users'] = $this->user_model->get_users();
$this->load->view('result', $data);

查看

<?php foreach ($users as $user) {
    echo '<p>' . $user->first_name . '</p>';
    echo '<p>' . $user->last_name . '</p>';
}?>

答案 1 :(得分:2)

考虑将循环从控制器移动到视图文件(在控制器上,您必须在加载视图文件之前准备所有数据)。您将只有一个加载视图文件的调用,并且在视图文件中,您可以根据需要在循环周期中打印出信息。

答案 2 :(得分:2)

在视图中循环。

<div>
    <?php foreach ($this->user_model->get_users() as $users): ?>
        <p><?php echo $user->first_name;?></p>
        <p><?php echo $user->last_name;?></p>
    <?php endforeach; ?>
</div>

此示例直接从模型中获取数据,该数据已多次在codeigniter论坛中讨论过。