16.2. 控制器脚本
上一页 | 第 16 章 Zend_View | 下一页

## 16.2. 控制器脚本

控制器是你初始化和配置 Zend_View的地方。你可以分配变量给view，并让view显示输出。

### 16.2.1. 变量赋值

控制器需要向视图传递必要的变量，在它处理view的代码之前。通常你可以一次一个地完成变量赋值的工作。

    <?php
    $view = new Zend_View();
    $view->a = "Hay";
    $view->b = "Bee";
    $view->c = "Sea";
    ?>

然而这样比较麻烦，那么可以将它们放进一个数组或对象中去。assign()方法允许你通过数组或对象进行赋值。下面这个例子和上例（一次一个赋值）的结果是一样的：

    <?php
    $view = new Zend_View();

    // assign an array of key-value pairs, where the
    // key is the variable name, and the value is
    // the assigned value.
    $array = array(
        'a' => "Hay",
        'b' => "Bee",
        'c' => "Sea",
    );
    $view->assign($array);

    // do the same with an object's public properties;
    // note how we cast it to an array when assigning.
    $obj = new StdClass;
    $obj->a = "Hay";
    $obj->b = "Bee";
    $obj->c = "Sea";
    $view->assign((array) $obj);
    ?>

另外，你也可使用这样的方法： 第一个参数是变量名，第二个是变量的值。

    <?php
    $view = new Zend_View();
    $view->assign('a', "Hay");
    $view->assign('b', "Bee");
    $view->assign('c', "Sea");
    ?>

### 16.2.2. 调用视图脚本并打印输出

完成变量赋值后，Controller通知Zend_View通过render()调用一段特定的视图代码。注意，这个方法将会返回处理后的视图，而不是直接输出，所以你要用print或echo来打印输出。

    <?php
    $view = new Zend_View();
    $view->a = "Hay";
    $view->b = "Bee";
    $view->c = "Sea";
    echo $view->render('someView.php');
    ?>

### 16.2.3. 视图脚本的路径

默认地， Zend_View希望你的View脚本和Controller脚本在同一目录下。例如你的Controller文件在 “/path/to/app/controllers”目录下，并调用$view->render('someView.php')，则 Zend_View会查找"/path/to/app/controllers/someVire.php"文件。

显然，你的View代码很可能放在其它地方，那么需要告诉 Zend_View去哪里找，使用 setScriptPath()方法。

    <?php
    $view = new Zend_View();
    $view->setScriptPath('/path/to/app/views');
    ?>

现在当你调用$view->render('someView.php')，它会去找"/path/to/app/views/someView.php"。

事实上，你可以通过addScriptPath()增加路径。Zend_View会到最近增加的路径目录下找View脚本。这个方法允许你覆写默认的View，这样你可以定制和使用自己的皮肤或主题。

    <?php
    $view = new Zend_View();
    $view->addScriptPath('/path/to/app/views');
    $view->addScriptPath('/path/to/custom/');

    // now when you call $view->render('booklist.php'), Zend_View will
    // look first for "/path/to/custom/booklist.php", then for
    // "/path/to/app/views/booklist.php", and finally in the current
    // directory for "booklist.php".
    ?>

上一页 | 上一级 | 下一页
第 16 章 Zend_View | 起始页 | 16.3. 视图脚本