Zend_View-Controllers.xml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <sect1 id="zend.view.controllers">
  2. <title>Skrypt kontrolera</title>
  3. <para>
  4. Kontroler jest miejscem, w którym tworzysz i konfigurujesz instancję
  5. Zend_View. Potem przypisujesz do tej instancji zmienne zawierające dane,
  6. a następnie wybierasz skrypt widoku, który ma być zrenderowany.
  7. </para>
  8. <sect2 id="zend.view.controllers.assign">
  9. <title>Przekazywanie zmiennych</title>
  10. <para>
  11. Twój skrypt kontrolera powinien przypisać potrzebne zmienne do
  12. instancji widoku, zanim przekaże kontrolę do skryptu widoku. Możesz
  13. to zrobić przypisując zmienne do zmiennych instancji widoku:
  14. </para>
  15. <programlisting role="php"><![CDATA[
  16. $view = new Zend_View();
  17. $view->a = "Hay";
  18. $view->b = "Bee";
  19. $view->c = "Sea";
  20. ]]>
  21. </programlisting>
  22. <para>
  23. Jednak mogłoby być niewygodnie gdy zmienne, które masz przekazać
  24. są zebrane w tablicy lub obiekce.
  25. </para>
  26. <para>
  27. Metoda assign() pozwala na automatyczne przypisanie wszystkich
  28. zmiennych z tablicy lub obiektu. Poniższe przykłady dają taki sam
  29. efekt jak poprzedni przykład, w którym zmienne były przypisywane
  30. pojedynczo:
  31. </para>
  32. <programlisting role="php"><![CDATA[
  33. $view = new Zend_View();
  34. // przypisuje tablicę zmiennych w postaci par
  35. // klucz-wartość, gdzie klucz jest nazwą przypisanej
  36. // zmiennej, a wartość jest jej wartościa.
  37. $array = array(
  38. 'a' => "Hay",
  39. 'b' => "Bee",
  40. 'c' => "Sea",
  41. );
  42. $view->assign($array);
  43. // robi to samo z publicznymi właściwościami
  44. // obiektu. zauważ jak rzutujemy obiekt na
  45. // tablicę podczas przypisywania
  46. $obj = new StdClass;
  47. $obj->a = "Hay";
  48. $obj->b = "Bee";
  49. $obj->c = "Sea";
  50. $view->assign((array) $obj);
  51. ]]>
  52. </programlisting>
  53. <para>
  54. Oczywiście możesz także przypisywać zmienne jedna po drugiej,
  55. przekazując nazwę zmiennej jako łańcuch znaków, a potem wartość
  56. zmiennej:
  57. </para>
  58. <programlisting role="php"><![CDATA[
  59. $view = new Zend_View();
  60. $view->assign('a', "Hay");
  61. $view->assign('b', "Bee");
  62. $view->assign('c', "Sea");
  63. ]]>
  64. </programlisting>
  65. </sect2>
  66. <sect2 id="zend.view.controllers.render">
  67. <title>Wykonywanie skryptu widoku</title>
  68. <para>
  69. Kiedy już przypisałeś wszystkie zmienne, kontroler powinien przekazać
  70. obiektowi Zend_View informację o wykonaniu konkretnego skryptu widoku.
  71. Zrób to wywołując metodę render(). Zauważ, że ta metoda zwróci
  72. wygenerowany widok zamiast wyświetlając go, więc musisz sam go wyświetlić
  73. za pomocą funkcji echo() lub print().
  74. </para>
  75. <programlisting role="php"><![CDATA[
  76. $view = new Zend_View();
  77. $view->a = "Hay";
  78. $view->b = "Bee";
  79. $view->c = "Sea";
  80. echo $view->render('someView.php');
  81. ]]>
  82. </programlisting>
  83. </sect2>
  84. <sect2 id="zend.view.controllers.script-paths">
  85. <title>Ścieżki skryptu widoku</title>
  86. <para>
  87. Domyślnie, Zend_View oczekuje, że skrypty widoku są umieszczone
  88. względnie do skryptu wywołującego. Na przykład jeśli
  89. Twój skrypt kontrolera jest w katalogu "/path/to/app/controllers"
  90. i wywołuje on $view->render('someView.php'), to Zend_View będzie
  91. szukać pliku "/path/to/app/controllers/someView.php".
  92. </para>
  93. <para>
  94. Oczywiście, Twoje skrypty są pewnie umieszczone gdzieś indziej.
  95. Aby poinformować Zend_View o tym, gdzie ma szukać skryptów, użyj
  96. metody setScriptPath().
  97. </para>
  98. <programlisting role="php"><![CDATA[
  99. $view = new Zend_View();
  100. $view->setScriptPath('/path/to/app/views');
  101. ]]>
  102. </programlisting>
  103. <para>
  104. Teraz kiedy wywołasz metodę $view->render('someView.php'), będzie ona
  105. szukać pliku "/path/to/app/views/someView.php".
  106. </para>
  107. <para>
  108. Oczywiście możesz dodawać ścieżki na stos używająć metody addScriptPath().
  109. Gdy dodajesz ścieżki na stos, Zend_View będzie szukać skryptu widoku
  110. począwszy od ostatnio dodanej ścieżki. To pozwala na nadpisanie domyślnych
  111. widoków za pomocą innych widoków, dzięki czemu możesz tworzyć różne
  112. "motywy" czy "skórki" dla niektórych widoków, zostawiając inne bez zmian.
  113. </para>
  114. <programlisting role="php"><![CDATA[
  115. $view = new Zend_View();
  116. $view->addScriptPath('/path/to/app/views');
  117. $view->addScriptPath('/path/to/custom/');
  118. // teraz gdy wywołasz $view->render('booklist.php'), Zend_View będzie
  119. // wpierw szukać pliku "/path/to/custom/booklist.php", potem
  120. // "/path/to/app/views/booklist.php", a ostatecznie pliku "booklist.php"
  121. // w bieżącym katalogu
  122. ]]>
  123. </programlisting>
  124. </sect2>
  125. </sect1>