CodeIgniter通过模板传递不同的变量

时间:2014-10-21 15:12:05

标签: php codeigniter templates

我是CodeIgniter的新手,我遇到了以下问题:

当我从控制器中加载视图时,我使用了以下代码:

 $this->load->view('includes/header');
 $this->load->view('includes/main_menu');
 $this->load->view('show_users');
 $this->load->view('includes/footer');

现在我创建了一个加载标题,菜单,内容和页脚的模板,因此我不必在每个控制器中加载所有这些视图。这一切都很好,直到我通过模板向视图传递数据。

现在的情况是这样的: 控制器 - 模板 - 视图

控制器:(show_users.php)

$data['userdata'] = $this->users_model->get_all_users();
$data['page'] = 'show_users';

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

模板:(template.php)

$this->load->view('includes/header');
$this->load->view('includes/main_menu');
$this->load->view($page, $userdata);
$this->load->view('includes/footer');

查看:(show_users.php)

<div id="users_table">
    <table border="1">
        <tr>
            <th>ID</th><th>First Name</th><th>Last Name</th>
        </tr>
        <?php
        foreach($userdata as $r): ?>
            <tr><td><?php echo $r['id']; ?></td><td><?php echo $r['firstName']; ?></td><td><?php echo $r['lastName']; ?></td></tr>
        <?php endforeach; ?>
    </table>
</div>

现在我使用

将'userdata'变量传递给视图
$this->load->view($page, $userdata);

并且工作正常。但是我想在整个网站上使用这个模板,所以第二个参数并不总是$ userdata。 (可以是随机数组,字符串等,具有不同的var名称)

有什么方法可以解决这个问题吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

我认为这样做会很好,假设您使用合理的命名:

 $data['userdata'] = $this->users_model->get_all_users();
 $data['page'] = 'show_users';
 $this->load->view('template', $data);

 $this->load->view($page, $userdata);

也可以是:

 $data['view_data'] = $this->users_model->get_all_users();
 $this->load->view($page, $view_data);

通过在控制器中始终使用$data['view_data'],只要索引保持不变,就可以为其分配任何所需的内容。

更多例子:

 $data['view_data'] = some_other_method_thats_not_getting_users();
 $this->load->view($page, $view_data);