Zend_View-Controllers.xml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <sect1 id="zend.view.controllers">
  2. <title>控制器脚本</title>
  3. <para>
  4. 控制器是你实例化和配置Zend_View的地方。你可以分配变量给view,并让view使用某个特定的模板来输出。
  5. </para>
  6. <sect2 id="zend.view.controllers.assign">
  7. <title>变量赋值</title>
  8. <para>
  9. 控制器需要向视图传递必要的变量,在它处理view的代码之前。通常你可以一次一个地完成变量赋值的工作。
  10. </para>
  11. <programlisting role="php"><![CDATA[
  12. $view = new Zend_View();
  13. $view->a = "Hay";
  14. $view->b = "Bee";
  15. $view->c = "Sea";
  16. ]]>
  17. </programlisting>
  18. <para>
  19. 然而这样比较麻烦,那么你可以将它们放进一个数组或对象中去。assign()方法允许你通过数组或对象进行赋值。下面这个例子和上例(一次一个赋值)的结果是一样的:
  20. </para>
  21. <programlisting role="php"><![CDATA[
  22. $view = new Zend_View();
  23. //以数组的形式进行赋值,键名为View的变量名,键值为变量值
  24. $array = array(
  25. 'a' => "Hay",
  26. 'b' => "Bee",
  27. 'c' => "Sea",
  28. );
  29. $view->assign($array);
  30. //也可以通过对象来赋值,但要先把对象转型为数组
  31. $obj = new StdClass;
  32. $obj->a = "Hay";
  33. $obj->b = "Bee";
  34. $obj->c = "Sea";
  35. $view->assign((array) $obj);
  36. ]]>
  37. </programlisting>
  38. <para>
  39. 另外,你也可使用这样的方法: 第一个参数是变量名,第二个是变量的值。
  40. </para>
  41. <programlisting role="php"><![CDATA[
  42. $view = new Zend_View();
  43. $view->assign('a', "Hay");
  44. $view->assign('b', "Bee");
  45. $view->assign('c', "Sea");
  46. ]]>
  47. </programlisting>
  48. </sect2>
  49. <sect2 id="zend.view.controllers.render">
  50. <title>调用视图脚本并打印输出</title>
  51. <para>
  52. 完成所有变量赋值后,Controller通知Zend_View通过render()调用一段特定的视图代码。注意,这个方法将只返回处理后的视图,而不直接输出,所以你要用print或echo来打印输出。
  53. </para>
  54. <programlisting role="php"><![CDATA[
  55. $view = new Zend_View();
  56. $view->a = "Hay";
  57. $view->b = "Bee";
  58. $view->c = "Sea";
  59. echo $view->render('someView.php');
  60. ]]>
  61. </programlisting>
  62. </sect2>
  63. <sect2 id="zend.view.controllers.script-paths">
  64. <title>视图脚本的路径</title>
  65. <para>
  66. 默认地, Zend_View希望你的View脚本和Controller脚本在同一目录下。比如说,如果你的Controller文件在 “/path/to/app/controllers”目录下,并调用$view->render('someView.php'),则Zend_View会查找"/path/to/app/controllers/someVire.php"文件。
  67. </para>
  68. <para>
  69. 显然,你的View代码很可能放在其它地方,那么需要告诉 Zend_View去哪里找,可使用 setScriptPath()方法。
  70. </para>
  71. <programlisting role="php"><![CDATA[
  72. $view = new Zend_View();
  73. $view->setScriptPath('/path/to/app/views');
  74. ]]>
  75. </programlisting>
  76. <para>
  77. 现在当你调用$view->render('someView.php'),它会去找"/path/to/app/views/someView.php"。
  78. </para>
  79. <para>
  80. 事实上,你可以通过addScriptPath()增加路径。Zend_View会到最近增加的路径目录下找View脚本。这样你可以改变默认的外观,通过定制和使用自己的皮肤或主题。
  81. </para>
  82. <programlisting role="php"><![CDATA[
  83. $view = new Zend_View();
  84. $view->addScriptPath('/path/to/app/views');
  85. $view->addScriptPath('/path/to/custom/');
  86. // 现在如果你调用 $view->render('booklist.php'), Zend_View 将
  87. // 首先查找 "/path/to/custom/booklist.php", 找不到再找
  88. // "/path/to/app/views/booklist.php", 如果还找不到,最后查找当前目录下//的"booklist.php".
  89. ]]>
  90. </programlisting>
  91. </sect2>
  92. </sect1>
  93. <!--
  94. vim:se ts=4 sw=4 et:
  95. -->