第 28 章 Zend_View
上一页 |  | 下一页

## 第 28 章 Zend_View

## 28.1. 简介

Zend_View是用来在MVC模式中处理View（视图）部份的一个类。也就是说它用来使视图部份的代码与Model及controller部分分离。它提供了helper,output filter,variable escaping等几个功能组件。

Zend_View使用PHP本身作为你的模板，或者你也可以建立其它模板引擎的实例，并用你的view代码来对其进行操作。

使用Zend_View主要有两步： 1. 你的Controller建立一个Zend_View实例，并将需要的变量传递给它； 2. Controller告诉Zend_View显示一个特定的视图，生成View输出的内容。

### 28.1.1. 控制器脚本

下面是一个简单的例子。假设你有一个书籍清单，想把它打印出来。控制器代码可能看起来是这样的：

    <?php
    //使用一个模型来获取书籍作者和标题相关数据
    $data = array(
        array(
            'author' => 'Hernando de Soto',
            'title' => 'The Mystery of Capitalism'
        ),
        array(
            'author' => 'Henry Hazlitt',
            'title' => 'Economics in One Lesson'
        ),
        array(
            'author' => 'Milton Friedman',
            'title' => 'Free to Choose'
        )
    );

    //传递数据给Zend_View类的实例
    Zend::loadClass('Zend_View');
    $view = new Zend_View();
    $view->books = $data;

    //调用一段View代码"booklist.php"来显示数据
    echo $view->render('booklist.php');
    ?>

### 28.1.2. 视图脚本

现在我们看看相关的视图代码"booklist.php"。这是一段普通的代码，但是有一点特别：它是在Zend_View实例的内部运行的。 (controller传递给Zend_View实例的变量是public的)。一段非常基本的视图代码看起来是这样的：

    <?php if ($this->books): ?>

        <!-- A table of some books. -->
        <table>
            <tr>
                <th>Author</th>
                <th>Title</th>
            </tr>

            <?php foreach ($this->books as $key => $val): ?>
            <tr>
                <td><?php echo $this->escape($val['author']) ?></td>
                <td><?php echo $this->escape($val['title']) ?></td>
            </tr>
            <?php endforeach; ?>

        </table>

    <?php else: ?>

        <p>There are no books to display.</p>

    <?php endif; ?>

注意我们使用escapte()来转义输出。

上一页 |  | 下一页
27.5. 校验主机名 | 起始页 | 28.2. 控制器脚本