Permalink
Browse files

merge from yiidoc.

  • Loading branch information...
qiang.xue
qiang.xue committed Nov 14, 2010
1 parent 9428094 commit 871212032fc1a076d31dd9951d1787327998c2b9
Showing with 6,150 additions and 2,936 deletions.
  1. +1 −1 docs/blog/pl/post.admin.txt
  2. +1 −1 docs/blog/pl/start.design.txt
  3. +2 −2 docs/blog/ru/final.deployment.txt
  4. +1 −1 docs/blog/ru/final.logging.txt
  5. +3 −3 docs/blog/ru/post.admin.txt
  6. +1 −1 docs/blog/zh_cn/post.admin.txt
  7. +2 −2 docs/guide/de/basics.application.txt
  8. +1 −1 docs/guide/de/basics.component.txt
  9. +88 −1 docs/guide/de/basics.controller.txt
  10. +1 −1 docs/guide/de/basics.convention.txt
  11. +12 −8 docs/guide/de/basics.module.txt
  12. +72 −24 docs/guide/de/basics.namespace.txt
  13. +1 −1 docs/guide/de/basics.view.txt
  14. +6 −4 docs/guide/de/basics.workflow.txt
  15. +13 −1 docs/guide/de/changes.txt
  16. +2 −2 docs/guide/de/database.arr.txt
  17. +1 −1 docs/guide/de/form.action.txt
  18. +43 −6 docs/guide/de/form.builder.txt
  19. +5 −5 docs/guide/de/quickstart.first-app.txt
  20. +1 −1 docs/guide/de/toc.txt
  21. +268 −199 docs/guide/de/topics.auth.txt
  22. +139 −52 docs/guide/de/topics.console.txt
  23. +3 −2 docs/guide/de/topics.i18n.txt
  24. +2 −2 docs/guide/de/topics.performance.txt
  25. +1 −1 docs/guide/de/topics.security.txt
  26. +34 −4 docs/guide/de/topics.theming.txt
  27. +49 −49 docs/guide/id/basics.application.txt
  28. +58 −44 docs/guide/id/basics.component.txt
  29. +125 −43 docs/guide/id/basics.controller.txt
  30. +67 −49 docs/guide/id/basics.convention.txt
  31. +13 −13 docs/guide/id/basics.entry.txt
  32. +1 −1 docs/guide/id/basics.model.txt
  33. +15 −21 docs/guide/id/basics.module.txt
  34. +16 −16 docs/guide/id/basics.mvc.txt
  35. +80 −21 docs/guide/id/basics.namespace.txt
  36. +40 −38 docs/guide/id/basics.view.txt
  37. +13 −12 docs/guide/id/basics.workflow.txt
  38. +40 −40 docs/guide/id/caching.data.txt
  39. +15 −15 docs/guide/id/caching.dynamic.txt
  40. +57 −58 docs/guide/id/caching.fragment.txt
  41. +44 −45 docs/guide/id/caching.overview.txt
  42. +21 −21 docs/guide/id/caching.page.txt
  43. +69 −1 docs/guide/id/changes.txt
  44. +129 −107 docs/guide/id/database.ar.txt
  45. +241 −181 docs/guide/id/database.arr.txt
  46. +44 −19 docs/guide/id/database.dao.txt
  47. +41 −41 docs/guide/id/extension.create.txt
  48. +7 −7 docs/guide/id/extension.integration.txt
  49. +9 −9 docs/guide/id/extension.overview.txt
  50. +39 −17 docs/guide/id/extension.use.txt
  51. +16 −16 docs/guide/id/form.action.txt
  52. +143 −94 docs/guide/id/form.model.txt
  53. +1 −1 docs/guide/id/form.overview.txt
  54. +15 −15 docs/guide/id/form.table.txt
  55. +60 −23 docs/guide/id/form.view.txt
  56. +3 −3 docs/guide/id/index.txt
  57. +89 −105 docs/guide/id/quickstart.first-app.txt
  58. +7 −8 docs/guide/id/quickstart.installation.txt
  59. +13 −14 docs/guide/id/quickstart.what-is-yii.txt
  60. +20 −10 docs/guide/id/toc.txt
  61. +123 −84 docs/guide/id/topics.auth.txt
  62. +138 −41 docs/guide/id/topics.console.txt
  63. +76 −26 docs/guide/id/topics.error.txt
  64. +52 −37 docs/guide/id/topics.i18n.txt
  65. +45 −48 docs/guide/id/topics.logging.txt
  66. +35 −35 docs/guide/id/topics.performance.txt
  67. +16 −5 docs/guide/id/topics.prado.txt
  68. +29 −29 docs/guide/id/topics.security.txt
  69. +232 −4 docs/guide/id/topics.theming.txt
  70. +75 −31 docs/guide/id/topics.url.txt
  71. +13 −13 docs/guide/id/topics.webservice.txt
  72. +1 −1 docs/guide/pl/basics.application.txt
  73. +24 −1 docs/guide/pl/basics.controller.txt
  74. +45 −12 docs/guide/pl/basics.namespace.txt
  75. +8 −1 docs/guide/pl/changes.txt
  76. +75 −30 docs/guide/pl/topics.auth.txt
  77. +148 −25 docs/guide/pl/topics.console.txt
  78. +3 −2 docs/guide/pl/topics.i18n.txt
  79. +1 −1 docs/guide/pl/topics.security.txt
  80. +21 −1 docs/guide/pl/topics.theming.txt
  81. +4 −4 docs/guide/ru/basics.application.txt
  82. +25 −2 docs/guide/ru/basics.controller.txt
  83. +71 −13 docs/guide/ru/basics.namespace.txt
  84. +2 −2 docs/guide/ru/basics.view.txt
  85. +4 −4 docs/guide/ru/basics.workflow.txt
  86. +9 −2 docs/guide/ru/changes.txt
  87. +1 −1 docs/guide/ru/extension.create.txt
  88. +5 −5 docs/guide/ru/extension.use.txt
  89. +20 −21 docs/guide/ru/form.action.txt
  90. +3 −3 docs/guide/ru/form.builder.txt
  91. +8 −5 docs/guide/ru/form.model.txt
  92. +2 −1 docs/guide/ru/quickstart.first-app.txt
  93. +1 −1 docs/guide/ru/test.functional.txt
  94. +1 −1 docs/guide/ru/test.overview.txt
  95. +106 −32 docs/guide/ru/topics.auth.txt
  96. +124 −35 docs/guide/ru/topics.console.txt
  97. +3 −2 docs/guide/ru/topics.i18n.txt
  98. +2 −2 docs/guide/ru/topics.security.txt
  99. +27 −2 docs/guide/ru/topics.theming.txt
  100. +3 −3 docs/guide/ru/topics.url.txt
  101. +1 −1 docs/guide/sv/basics.application.txt
  102. +23 −1 docs/guide/sv/basics.controller.txt
  103. +74 −16 docs/guide/sv/basics.namespace.txt
  104. +1 −1 docs/guide/sv/database.arr.txt
  105. +126 −25 docs/guide/sv/topics.auth.txt
  106. +124 −33 docs/guide/sv/topics.console.txt
  107. +1 −1 docs/guide/sv/topics.gii.txt
  108. +3 −2 docs/guide/sv/topics.i18n.txt
  109. +1 −1 docs/guide/sv/topics.security.txt
  110. +28 −3 docs/guide/sv/topics.theming.txt
  111. +78 −1 docs/guide/zh_cn/basics.controller.txt
  112. +58 −3 docs/guide/zh_cn/basics.namespace.txt
  113. +37 −25 docs/guide/zh_cn/caching.data.txt
  114. +6 −1 docs/guide/zh_cn/caching.fragment.txt
  115. +30 −13 docs/guide/zh_cn/caching.overview.txt
  116. +1 −1 docs/guide/zh_cn/caching.page.txt
  117. +52 −42 docs/guide/zh_cn/changes.txt
  118. +390 −179 docs/guide/zh_cn/database.arr.txt
  119. +36 −1 docs/guide/zh_cn/extension.create.txt
  120. +88 −1 docs/guide/zh_cn/extension.use.txt
  121. +2 −1 docs/guide/zh_cn/index.txt
  122. +72 −47 docs/guide/zh_cn/quickstart.first-app.txt
  123. +1 −1 docs/guide/zh_cn/quickstart.installation.txt
  124. +71 −6 docs/guide/zh_cn/topics.auth.txt
  125. +221 −1 docs/guide/zh_cn/topics.theming.txt
  126. +92 −0 docs/guide/zh_cn/topics.url.txt
  127. +15 −38 docs/guide/zh_cn/upgrade.txt
  128. +48 −18 framework/messages/bg/yii.php
  129. +6 −4 framework/messages/bg/zii.php
  130. +13 −6 framework/messages/de/yii.php
  131. +10 −7 framework/messages/el/yii.php
  132. +114 −66 framework/messages/id/yii.php
  133. +64 −58 framework/messages/nl/yii.php
  134. +17 −10 framework/messages/sv/yii.php
  135. +3 −2 framework/messages/sv/zii.php
  136. +33 −9 framework/messages/ta_in/yii.php
  137. +50 −20 framework/messages/vi/yii.php
  138. +6 −5 framework/messages/vi/zii.php
  139. +73 −24 framework/messages/zh_cn/yii.php
  140. +18 −1 framework/messages/zh_cn/zii.php
  141. +1 −1 framework/messages/zh_tw/yii.php
  142. +1 −1 framework/views/bg/log-firebug.php
  143. +1 −1 framework/views/bg/profile-callstack-firebug.php
  144. +1 −1 framework/views/bg/profile-summary-firebug.php
  145. +1 −1 framework/views/de/log-firebug.php
  146. +1 −1 framework/views/de/profile-callstack-firebug.php
  147. +1 −1 framework/views/de/profile-summary-firebug.php
  148. +1 −1 framework/views/el/log-firebug.php
  149. +1 −1 framework/views/el/profile-callstack-firebug.php
  150. +1 −1 framework/views/el/profile-summary-firebug.php
  151. +1 −1 framework/views/es/log-firebug.php
  152. +1 −1 framework/views/es/profile-callstack-firebug.php
  153. +1 −1 framework/views/es/profile-summary-firebug.php
  154. +1 −1 framework/views/fr/log-firebug.php
  155. +1 −1 framework/views/fr/profile-callstack-firebug.php
  156. +1 −1 framework/views/fr/profile-summary-firebug.php
  157. +1 −1 framework/views/he/log-firebug.php
  158. +1 −1 framework/views/he/profile-callstack-firebug.php
  159. +1 −1 framework/views/he/profile-summary-firebug.php
  160. +1 −1 framework/views/hr/log-firebug.php
  161. +1 −1 framework/views/hr/profile-callstack-firebug.php
  162. +1 −1 framework/views/hr/profile-summary-firebug.php
  163. +3 −3 framework/views/id/error.php
  164. +2 −2 framework/views/id/error400.php
  165. +3 −3 framework/views/id/error403.php
  166. +1 −1 framework/views/id/error404.php
  167. +2 −2 framework/views/id/error500.php
  168. +1 −1 framework/views/id/error503.php
  169. +1 −1 framework/views/id/log-firebug.php
  170. +1 −1 framework/views/id/profile-callstack-firebug.php
  171. +1 −1 framework/views/id/profile-summary-firebug.php
  172. +1 −1 framework/views/ja/log-firebug.php
  173. +1 −1 framework/views/ja/profile-callstack-firebug.php
  174. +1 −1 framework/views/ja/profile-summary-firebug.php
  175. +1 −1 framework/views/nl/error400.php
  176. +1 −1 framework/views/nl/error403.php
  177. +1 −1 framework/views/nl/error404.php
  178. +1 −1 framework/views/nl/error500.php
  179. +1 −1 framework/views/nl/error503.php
  180. +1 −1 framework/views/nl/exception.php
  181. +1 −1 framework/views/nl/log-firebug.php
  182. +1 −1 framework/views/nl/profile-callstack-firebug.php
  183. +1 −1 framework/views/nl/profile-callstack.php
  184. +1 −1 framework/views/nl/profile-summary-firebug.php
  185. +1 −1 framework/views/nl/profile-summary.php
  186. +1 −1 framework/views/no/log-firebug.php
  187. +1 −1 framework/views/no/profile-callstack-firebug.php
  188. +1 −1 framework/views/no/profile-summary-firebug.php
  189. +1 −1 framework/views/pl/log-firebug.php
  190. +2 −2 framework/views/pl/profile-callstack-firebug.php
  191. +3 −3 framework/views/pl/profile-summary-firebug.php
  192. +1 −1 framework/views/pt/log-firebug.php
  193. +1 −1 framework/views/pt/profile-callstack-firebug.php
  194. +1 −1 framework/views/pt/profile-summary-firebug.php
  195. +1 −1 framework/views/ro/log-firebug.php
  196. +1 −1 framework/views/ro/profile-callstack-firebug.php
  197. +1 −1 framework/views/ro/profile-summary-firebug.php
  198. +1 −1 framework/views/ru/profile-callstack.php
  199. +4 −4 framework/views/ru/profile-summary.php
  200. +1 −1 framework/views/sv/log-firebug.php
  201. +1 −1 framework/views/sv/profile-callstack-firebug.php
  202. +1 −1 framework/views/sv/profile-summary-firebug.php
  203. +1 −1 framework/views/vi/log-firebug.php
  204. +1 −1 framework/views/vi/profile-callstack-firebug.php
  205. +1 −1 framework/views/vi/profile-summary-firebug.php
  206. +1 −1 framework/views/zh_cn/log-firebug.php
  207. +1 −1 framework/views/zh_cn/profile-callstack-firebug.php
  208. +1 −1 framework/views/zh_cn/profile-callstack.php
  209. +1 −1 framework/views/zh_cn/profile-summary-firebug.php
  210. +1 −1 framework/views/zh_cn/profile-summary.php
  211. +1 −1 framework/views/zh_tw/log-firebug.php
  212. +2 −2 framework/views/zh_tw/profile-callstack-firebug.php
  213. +1 −1 framework/views/zh_tw/profile-callstack.php
  214. +1 −1 framework/views/zh_tw/profile-summary-firebug.php
  215. +1 −1 framework/views/zh_tw/profile-summary.php
  216. +0 −2 requirements/messages/bg/yii.php
  217. +5 −5 requirements/messages/de/yii.php
  218. +0 −2 requirements/messages/de_de/yii.php
  219. +4 −4 requirements/messages/el/yii.php
  220. +0 −2 requirements/messages/es/yii.php
  221. +0 −2 requirements/messages/fr/yii.php
  222. +0 −2 requirements/messages/he/yii.php
  223. +0 −2 requirements/messages/hu/yii.php
  224. +28 −27 requirements/messages/id/yii.php
  225. +0 −2 requirements/messages/it/yii.php
  226. +22 −22 requirements/messages/ja/yii.php
  227. +1 −3 requirements/messages/nl/yii.php
  228. +0 −2 requirements/messages/no/yii.php
  229. +8 −10 requirements/messages/pl/yii.php
  230. +0 −2 requirements/messages/pt/yii.php
  231. +0 −2 requirements/messages/ro/yii.php
  232. +1 −3 requirements/messages/ru/yii.php
  233. +4 −4 requirements/messages/sv/yii.php
  234. +0 −2 requirements/messages/vi/yii.php
  235. +0 −2 requirements/messages/zh_cn/yii.php
  236. +1 −3 requirements/messages/zh_tw/yii.php
  237. +15 −15 requirements/views/pl/index.php
  238. +1 −1 requirements/views/ru/index.php
@@ -107,4 +107,4 @@ Powyższy kod jest bardzo prosty. Najpierw usuwane są wszystkie komentarze, kt
> Tip|Wskazówka: Musimy jawnie usunąć wszystkie komentarze dla usuniętej wiadomości, ponieważ SQLite nie wspiera ograniczeń klucza obcego. W silnikach bazy danych, które wpierają ograniczanie (takich jak MySQL, PostgreSQL), ograniczenie klucza obcego może zostać tak zdefiniowane, że silnik bazy danych automatycznie usunie powiązane komentarze w momencie usuwania wiadomości. W takim przypadku nie będziemy potrzebowali w naszym kodzie jawnego usuwania.
-<div class="revision">$Id: post.admin.txt 1810 2010-02-18 00:24:54Z qiang.xue $</div>
+<div class="revision">$Id: post.admin.txt 2425 2010-09-05 01:30:14Z qiang.xue $</div>
@@ -4,7 +4,7 @@ Ogólna koncepcja
W oparciu o analizę wymagań, zdecydowaliśmy się używać następujące bazy danych w celu przechowywania trwałych danych dla naszej aplikacji blogowej:
* Tabela `tbl_user` przechowuje informacje o użytkownikach, włączając w to ich nazwy oraz hasła.
- * Tabela `tbl_post` przechowuje informacje o postach w blogu. Składa się ona przede wszystkim z następujących kolumn:
+ * Tabela `tbl_post` przechowuje informacje o psotach w blogu. Składa się ona przede wszystkim z następujących kolumn:
- `title` (tytuł): wymagany, tytuł wiadomości;
- `content` (zawartość): wymagana, zawartość treści wiadomości, zapisana w [formacie Markdown](http://daringfireball.net/projects/markdown/syntax);
- `status` (status): wymagany, status wiadomości, który może przyjmować następujące wartości:
@@ -26,8 +26,8 @@ return array(
мы увидим результат, сгенерированный действием `index` контроллера записей.
-Включение кэширование схемы
------------------------
+Включение кэширования схемы
+---------------------------
ActiveRecord полагается на метаданные о таблицах для определения
информации о столбце, поэтому тратится время для чтения метаданных и их
@@ -3,7 +3,7 @@
Рабочее веб-приложение часто нуждается в сложном журналировании различных
событий. В нашем приложении мы бы хотели журналировать появление ошибок,
-возникающих при в работе приложения. Это могут быть ошибки программирования или
+возникающих при работе приложения. Это могут быть ошибки программирования или
неправильной работы пользователей с системой. Журналирование этих ошибок
поможет нам улучшить наше приложение.
@@ -28,7 +28,7 @@ public function actionAdmin()
}
~~~
-Данный код полностью сгенерирован `yiic`. Сначала создаётся модель `Post` с сценарием
+Данный код полностью сгенерирован `yiic`. Сначала создаётся модель `Post` со сценарием
`search` [scenario](/doc/guide/ru/form.model), которую мы будем использовать для
сбора критериев поиска, указанных пользователем. Далее мы присваиваем
данные, введённые пользователем, модели. И, наконец, мы выводим отображение
@@ -71,7 +71,7 @@ $this->breadcrumbs=array(
)); ?>
~~~
-Для вывода записей мы используем компонент [CGridView], который позволяет
+Для вывода записей мы используем компонент [CGridView], который
разбивает данные на страницы и позволяет их сортировать по столбцам.
Наше изменение касается, главным образом, отображения каждого столбца.
К примеру, для столбца `title` мы указываем, что он должен содержать
@@ -137,4 +137,4 @@ protected function afterDelete()
> удаление комментариев в случае удаления записи. В этом случае нет необходимости
> удалять комментарии в коде.
-<div class="revision">$Id: post.admin.txt 1810 2010-02-18 00:24:54Z qiang.xue $</div>
+<div class="revision">$Id: post.admin.txt 2425 2010-09-05 01:30:14Z qiang.xue $</div>
@@ -22,7 +22,7 @@ public function actionAdmin()
}
~~~
-上面的代码由 `yiic` 工具生成,未作任何修改。它首先创建了一个 `search` [场景(scenario)](/doc/guide/form.model) 下的 `Post` 模型。我们将使用此模型收集用户指定的搜索条件。然后我们把用户可能会提供的数据赋值给模型。 最后,我们以此模型显示 `admin` 视图。
+上面的代码由 `yiic` 工具生成,且未作任何修改。它首先创建了一个 `search` [场景(scenario)](/doc/guide/form.model) 下的 `Post` 模型。我们将使用此模型收集用户指定的搜索条件。然后我们把用户可能会提供的数据赋值给模型。 最后,我们以此模型显示 `admin` 视图。
下面就是 `admin` 视图的代码:
@@ -67,7 +67,7 @@ Anwendungsverzeichnis
Im Anwendungsverzeichnis sind alle sicherheitsempfindlichen Dateien der
Applikation abgelegt. Per Voreinstellung ist dies der `protected`-Ordner
im Verzeichnis, das auch das Startscript enthält. Der Pfad zum
-Anwendungsverzeichnis kann in der Konfiguration über
+Anwendungsverzeichnis kann in der [Konfiguration](/doc/guide/basics.application#application-configuration) über
[basePath|CWebApplication::basePath] angepasst werden.
Sämtliche Inhalte in diesem Verzeichnis sollten vor Zugriff über das Web
@@ -228,4 +228,4 @@ Beim Bearbeiten eines Requests durchläuft eine Anwendung diesen Zyklus:
7. Auslösen des [onEndRequest|CApplication::onEndRequest]-Events
-<div class="revision">$Id: basics.application.txt 2311 2010-08-09 13:01:12Z alexander.makarow $</div>
+<div class="revision">$Id: basics.application.txt 2488 2010-09-20 11:38:02Z mdomba $</div>
@@ -196,4 +196,4 @@ Behavior zum Beispiel eine Eigenschaft namens `xyz` besitzt und an eine
Komponente `$a` angebunden wurde, kann mit `$a->xyz` darauf zugegriffen
werden.
-<div class="revision">$Id: basics.component.txt 2181 2010-06-14 20:01:23Z qiang.xue $</div>
+<div class="revision">$Id: basics.component.txt 2346 2010-08-28 13:12:27Z mdomba $</div>
@@ -144,6 +144,93 @@ protected/
UpdateAction.php
~~~
+
+### Binden von Actionparametern
+
+Seit Version 1.1.4 unterstützt Yii das automatische Binden von
+Actionparametern. Das bedeutet, dass eine Controlleraction Parameter
+definieren kann, deren Werte automatisch entsprechend ihrem Namen aus
+`$_GET` befüllt werden.
+
+Nehmen wir zum besseren Verständnis an, ein `PostController` soll eine neue
+Action `create` bekommen, die folgende zwei Parameter benötigt:
+
+* `category`: Eine Integerzahl, die für die Kategorie-ID steht, unter der ein
+neuer Beitrag angelegt werden soll;
+* `language`: Eine Zeichenkette, die die Sprache des neuen Beitrags angibt.
+
+Eine mögliche, allerdings relativ langweilige Umsetzung könnte die benötigten
+`$_GET`-Parameter wie folgt auslesen:
+
+~~~
+[php]
+class PostController extends CController
+{
+ public function actionCreate()
+ {
+ if(isset($_GET['category']))
+ $category=(int)$_GET['category'];
+ else
+ throw new CHttpException(404,'invalid request');
+
+ if(isset($_GET['language']))
+ $language=$_GET['language'];
+ else
+ $language='en';
+
+ // ... fun code starts here ...
+ }
+}
+~~~
+
+Verwendet man stattdessen das Actionparameter-Feature, vereinfacht sich diese
+Aufgabe wie folgt:
+
+~~~
+[php]
+class PostController extends CController
+{
+ public function actionCreate($category, $language='en')
+ {
+ $category=(int)$category;
+
+ // ... fun code starts here ...
+ }
+}
+~~~
+
+Beachten Sie, dass die Actionmethode `actionCreate` jetzt zwei Aufrufparameter
+erhalten hat. Deren Name muss exakt mit den in `$_GET` erwarteten Parametern
+übereinstimmen. Für den `$language`-Parameter is außerdem der Vorgabewert `en`
+definiert. Er wird verwendet, wenn kein `language`-Wert in `$_GET` enthalten
+ist. Da für `$category` kein solcher Vorgabewert definiert wurde, wird
+automatisch eine [CHttpException] mit Fehlercode 400 geworfen, falls dieser
+Parameter nicht im Request übergeben wird.
+
+Seit Version 1.1.5 kann Yii auch automatisch Parameter vom Typ Array erkennen.
+Dazu verwendet man das Type Hinting Feature von PHP wie folgt:
+
+~~~
+[php]
+class PostController extends CController
+{
+ public function actionCreate(array $categories)
+ {
+ // Yii stellt sicher, dass $categories ein Array ist
+ }
+}
+~~~
+
+Man gibt also in der Funktionsdeklaration das Schlüsselwort `array` vor
+`$categories` an. Falls `$_GET['categories']` ein String ist, wird es
+automatisch in ein Array (mit diesem String als einzigem Element) umgewandelt.
+
+> Note|Hinweis: Falls ein Parameter ohne Angabe von `array` deklariert wurde,
+> *muss* ein Skalarwert (also kein Arrray!) übergeben werden. Ist der
+> Parameter in `$_GET` trotzdem ein Array, wird eine HTTP-Exception
+> geworfen.
+
+
Filter
------
@@ -235,4 +322,4 @@ Filter angewendet werden soll und auf welche nicht. Oben soll der Filter
weder Plus noch Minus in der Filterkonfiguration auftauchen, wird der Filter
auf alle Actions angewendet.
-<div class="revision">$Id: basics.controller.txt 1264 2009-07-21 19:34:55Z qiang.xue $</div>
+<div class="revision">$Id: basics.controller.txt 2576 2010-10-28 02:46:14Z qiang.xue $</div>
@@ -163,4 +163,4 @@ nicht gemischt. Der Einfachheit halber empfehlen wir den Singular.
insbesondere nützlich, wenn sich mehrere Anwendungen eine Datenbank teilen
müssen.
-<div class="revision">$Id: basics.convention.txt 1768 2010-02-01 01:34:15Z qiang.xue $</div>
+<div class="revision">$Id: basics.convention.txt 2345 2010-08-28 12:51:08Z mdomba $</div>
@@ -128,11 +128,15 @@ Die entsprechende URL für diese Route wäre dann
Verschachtelte Module
---------------------
-Module können ineinander verschachtelt werden. Das bedeutet, dass ein Modul
-ein weiteres Modul enthalten kann. Wir nennen ersteres *Elternmodul*, letzeres
-*Kindmodul*. Kindmodule müssen im `modules`-Verzeichnis des Elternmoduls
-abgelegt werden. Um eine Controller-Action in einem Kindmodul aufzurufen,
-sollte man die Route `elternModulID/kindModulID/controllerID/actionID`
-verwenden.
-
-<div class="revision">$Id: basics.module.txt 2041 2010-04-11 03:54:25Z qiang.xue $</div>
+Module können in unbegrenzter Tiefe ineinander verschachtelt werden. Das bedeutet,
+dass ein Modul ein weiteres Modul enthalten kann, welches wiederum ein anderes
+Modul beherbergt. Wir nennen ersteres *Elternmodul*, letzeres
+*Kindmodul*. Kindmodule müssen in der
+[modules|CWebModule::modules]-Eigenschaft des jeweiligen Elternmoduls
+angebeben werden und zwar genauso wie in der Anwendungskonfiguration
+(siehe oben).
+Um eine Controller-Action in einem Kindmodul aufzurufen,
+wird die Route `elternModulID/kindModulID/controllerID/actionID`
+verwendet.
+
+<div class="revision">$Id: basics.module.txt 2363 2010-08-29 02:35:15Z qiang.xue $</div>
@@ -10,31 +10,33 @@ RootAlias.pfad.zu.ziel
~~~
wobei `RootAlias` für den Alias eines existierenden Verzeichnisses steht.
-Durch Aufrufen von [YiiBase::setPathOfAlias()] kann man neue Pfadaliase
-definieren. Folgende Rootaliase stehen bequemerweise schon bereit:
+
+Mit [YiiBase::getPathOfAlias()] erhält man den aufgelösten Pfad zu einem
+Alias. `system.web.CController` würde zum Beispiel nach
+`yii/framework/web/CController` übersetzt werden.
+
+Über [YiiBase::setPathOfAlias()] kann man auch neue Rootaliase definieren.
+
+Rootaliase
+----------
+
+Die folgenden praktischen Rootaliase werden von Yii schon vorbelegt:
- `system`: Verweist auf das Frameworkverzeichnis von Yii
- - `zii`: Verweist auf das Verzeichnis der
-[Zii-Bibliothek](/doc/guide/extension.use#zii-extensions).
- - `application`: Verweist auf das
-[Anwendungsverzeichnis](/doc/guide/basics.application#application-base-directory)
- - `webroot`: Steht für das Verzeichnis, das das
-[Startscript](/doc/guide/basics.entry) enthält. Dieser Alias ist seit
-Version 1.0.3 verfügbar.
- - `ext`: Verweist auf das Verzeichnis, das alle
-[Erweiterungen](/doc/guide/extension.overview) enthält. Dieser Alias steht
-seit Version 1.0.8 zur Verfügung.
+ - `zii`: Verweist auf das Verzeichnis der [Zii-Bibliothek](/doc/guide/extension.use#zii-extensions).
+ - `application`: Verweist auf das [Anwendungsverzeichnis](/doc/guide/basics.application#application-base-directory)
+ - `webroot`: Steht für das Verzeichnis, das das [Startscript](/doc/guide/basics.entry) enthält. Dieser Alias ist seit Version 1.0.3 verfügbar.
+ - `ext`: Verweist auf das Verzeichnis, das alle [Erweiterungen](/doc/guide/extension.overview) enthält. Dieser Alias steht seit Version 1.0.8 zur Verfügung.
Falls die Anwendung [Module](/doc/guide/basics.module) verwendet, wird für
jedes Modulstammverzeichnis ein zusätzlicher RootAlias in Form der ModulID
angelegt. Dieses Feature steht seit Version 1.0.3 zur Verfügung.
-Mit [YiiBase::getPathOfAlias()] erhält man den aufgelösten Pfad zu einem
-Alias. `system.web.CController` würde zum Beispiel nach
-`yii/framework/web/CController` übersetzt werden.
+Importieren von Klassen
+-----------------------
-Mit Aliasen können Klassen sehr bequem importiert werden. Möchte man zum
-Beispiel den Quelltext für [CController] importieren,
+Über Aliase kann man auch sehr bequem eine Klassendatei einbinden.
+Möchte man zum Beispiel den Quelltext für [CController] importieren,
genügt dieser Aufruf:
~~~
@@ -44,13 +46,37 @@ Yii::import('system.web.CController');
Die [import|YiiBase::import]-Methode ist wesentlich effizienter als `include` und
`require`. Eine importierte Klassendatei wird erst eingebunden, wenn die
-entsprechende Klasse zum ersten mal verwendet wird. Auch wenn ein Namespace
+entsprechende Klasse zum ersten mal verwendet wird (das geschieht über den
+PHP-Autoloader-Mechanismus). Auch wenn ein Namespace
mehrfach importiert wird, ist das wesentlich schneller als `include_once` oder
`require_once` zu verwenden.
> Tip|Tipp: Klassen aus dem Yii-Framework braucht man nicht zu importieren
> oder mit include einzubinden. Alle Kernklassen von Yii sind bereits importiert.
+###Verwenden einer Classmap
+
+Seit Version 1.1.5 kann Yii Anwenderklassen auch
+vorimportieren. Diesen Mechanismus verwendet Yii bereits intern
+für seine Kernklassen. Vorimportierte Klassen können überall in einer
+Anwendung ohne expliziten Import oder Include verwendet werden. Das ist
+insbesondere für Frameworks oder Libraries nützlich, die auf Yii aufbauen.
+
+Um eine Reihe von Klassen vorzuimportieren muss folgender Code vor
+[CWebApplication::run()] ausgeführt werden:
+
+~~~
+[php]
+Yii::$classMap=array(
+ 'KlassenName1' => 'pfad/zu/KlassenName1.php',
+ 'KlassenName2' => 'pfad/zu/KlassenName2.php',
+ ......
+);
+~~~
+
+Importieren von Verzeichnissen
+------------------------------
+
Um ein komplettes Verzeichnis zu importieren, kann man folgende Syntax
verwenden. Die darin enthaltenen Klassendateien werden dann bei Bedarf
automatisch eingebunden.
@@ -66,11 +92,14 @@ Beispiel auch ein Alias übergeben werden, um eine Instanz der entsprechenden
Klasse zu erzeugen, auch wenn die Klassendatei vorher noch nicht eingebunden
war.
-Verwechseln Sie einen Pfadalias bitte nicht mit einem Namespace. Ein Namespace
-bezieht sich auf eine logische Gruppe von Klassen, um sie von anderen
-Klassennamen zu unterscheiden, selbst sie genauso heißen. Ein
-Pfadalias hingegen bezieht sich auf eine Klassendatei oder ein Verzeichnis.
-Ein Pfadalias kollidiert nicht mit einem Namespace.
+Namespace
+---------
+
+Ein Namespace bezieht sich auf eine logisch zusammengehörige Gruppe von
+Klassen, um sie von anderen Klassen zu unterscheiden, selbst wenn diese den
+selben Namen haben. Verwechseln Sie Namespaces bitte nicht mit Pfadaliasen.
+Ein Pfadalias ist eher eine praktische Abkürzung für eine Datei oder ein
+Verzeichnis. Er hat mit einem Namespace nichts zu tun.
> Tip|Tipp: Da PHP vor Version 5.3.0 von Haus aus noch keine Namespaces
> unterstützt, können Sie keine Instanzen von unterschiedlichen Klassen mit
@@ -80,4 +109,23 @@ Ein Pfadalias kollidiert nicht mit einem Namespace.
> 'C' für das Yii-Framework zu reservieren und eigene Klassen mit
> anderen Präfixen zu versehen.
-<div class="revision">$Id: basics.namespace.txt 1602 2009-12-18 19:33:34Z qiang.xue $</div>
+
+Klassen mit Namespace
+---------------------
+
+Eine Klasse mit Namespace bezeichnet eine Klasse, die innerhalb eines
+nichtglobalen Namespaces definiert wurde. Die Klasse `application\components\GoogleMap`
+wurde z.B. im Namespace `application\components` definiert. Namespaces setzen
+PHP 5.3.0 oder höher voraus.
+
+Ab Version 1.1.5 können Klassen aus Namespaces ohne expliziten Import
+verwendet werden. Man kann z.B. `application\components\GoogleMap` verwenden,
+ohne die zugehörige Klassendatei vorher explizit einzubinden. Dies wird durch
+durch einen verbesserten Autoloading-Mechanismus von Yii ermöglicht.
+
+Um Klassen mit Namespace automatisch einzubinden, muss der Namespace ähnlich
+wie ein Pfadalias benannt sein. Die Klasse `application\components\GoogleMap`
+muss zum Beispiel an dem Ort gespeichert werden, der dem Pfadalias
+`application.components.GoogleMap` entspricht.
+
+<div class="revision">$Id: basics.namespace.txt 2630 2010-11-08 21:13:33Z qiang.xue $</div>
@@ -147,4 +147,4 @@ Yii stellt eine Reihe von Vorgabe-Systemviews bereit, die unter
`framework/views` zu finden sind. Man kann sie leicht anpassen, indem
man gleichnamige Viewdateien in `protected/views/system` anlegt.
-<div class="revision">$Id: basics.view.txt 1809 2010-02-17 22:08:34Z qiang.xue $</div>
+<div class="revision">$Id: basics.view.txt 2367 2010-08-29 17:29:22Z qiang.xue $</div>
@@ -17,9 +17,11 @@ einige Anwendungskomponenten (z.B. die "user component", die Benutzerkomponente)
angelegt werden.
3. Erstellen der jeweiligen [Model](/doc/guide/basics.model)-Klassen für
-alle vorkommenden Daten. Auch hier kann `yiic` verwendet werden, um
-automatisch [ActiveRecord](/doc/guide/database.ar)-Klassen für alle beteiligten
-Datenbanktabellen zu generieren.
+alle vorkommenden Daten. Die [ActiveRecord](/doc/guide/database.ar)-Klassen
+für alle Datenbanktabellen können mit dem `Gii`-Werkzeug erstellt werden, das in den
+Kapiteln [Automatische Codegenerierung] und [Erstellen der ersten
+Yii-Anwendung](doc/guide/quickstart.first-app#implementing-crud-operations)
+beschrieben wird.
4. Erstellen der [Controller](/doc/guide/basics.controller)-Klassen
für zusammengehörende Anfragen. Wie die einzelnen Anfragen zu einem Controller
@@ -49,4 +51,4 @@ Onlinestellung.
Für jeden der obigen Schritte kann es nötig sein, "Test cases" (sinngem:
automatisierte Funktionstests) zu erstellen und durchzuführen.
-<div class="revision">$Id: basics.workflow.txt 1034 2009-05-19 21:33:55Z qiang.xue $</div>
+<div class="revision">$Id: basics.workflow.txt 2388 2010-08-30 22:56:26Z alexander.makarow $</div>
Oops, something went wrong.

0 comments on commit 8712120

Please sign in to comment.