升级视图

文档

变更内容

  • 视图的写法与之前基本相同,但调用方式不同。CI3 使用 $this->load->view('x');,现在可以改用 return view('x');

  • CI4 支持 视图单元,可将响应拆分为多个部分来构建; 也支持 视图布局,用于页面布局。

  • 模板解析器 仍然可用,而且增强了很多。

升级指南

  1. 首先,将所有视图移动到 app/Views 目录。

  2. 在所有加载视图的脚本中,修改视图的加载语法:

    • $this->load->view('directory_name/file_name') 改为 return view('directory_name/file_name');

    • $content = $this->load->view('file', $data, TRUE); 改为 $content = view('file', $data);

  3. (可选)可以将视图中的 echo 语法从 <?php echo $title; ?> 改为 <?= $title ?>

  4. 如果存在,删除 defined('BASEPATH') OR exit('No direct script access allowed'); 这一行。

代码示例

CodeIgniter 3.x 版本

路径:application/views

<html>
<head>
    <title><?php echo html_escape($title); ?></title>
</head>
<body>
    <h1><?php echo html_escape($heading); ?></h1>

    <h3>My Todo List</h3>

    <ul>
    <?php foreach ($todo_list as $item): ?>
        <li><?php echo html_escape($item); ?></li>
    <?php endforeach; ?>
    </ul>

</body>
</html>

CodeIgniter 4.x 版本

路径:app/Views

<html>
<head>
    <title><?= esc($title) ?></title>
</head>
<body>
    <h1><?= esc($heading) ?></h1>

    <h3>My Todo List</h3>

    <ul>
    <?php foreach ($todo_list as $item): ?>
        <li><?= esc($item) ?></li>
    <?php endforeach ?>
    </ul>

</body>
</html>