Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

merging yiidoc to yii.

  • Loading branch information...
commit 6769b5fbb26b0c5bf6d429a365157c50086fb338 1 parent 47d3c1f
qiang.xue authored
Showing with 1,926 additions and 1,316 deletions.
  1. +2 −2 docs/blog/pl/post.create.txt
  2. +3 −3 docs/blog/pl/post.display.txt
  3. +17 −3 docs/blog/pl/post.model.txt
  4. +2 −2 docs/blog/ru/final.url.txt
  5. +1 −1  docs/blog/ru/portlet.menu.txt
  6. +2 −2 docs/blog/ru/post.create.txt
  7. +3 −3 docs/blog/ru/post.display.txt
  8. +20 −4 docs/blog/ru/post.model.txt
  9. +100 −65 docs/blog/ru/prototype.scaffold.txt
  10. +1 −1  docs/guide/de/basics.component.txt
  11. +6 −1 docs/guide/de/changes.txt
  12. +4 −1 docs/guide/de/database.arr.txt
  13. +1 −1  docs/guide/de/form.builder.txt
  14. +1 −1  docs/guide/de/form.table.txt
  15. +4 −4 docs/guide/de/quickstart.first-app-yiic.txt
  16. +3 −3 docs/guide/de/quickstart.first-app.txt
  17. +2 −1  docs/guide/de/toc.txt
  18. +17 −17 docs/guide/de/topics.logging.txt
  19. +130 −32 docs/guide/de/topics.theming.txt
  20. +1 −1  docs/guide/de/topics.url.txt
  21. +1 −2  docs/guide/es/basics.mvc.txt
  22. +120 −110 docs/guide/he/changes.txt
  23. +17 −16 docs/guide/he/form.overview.txt
  24. +17 −8 docs/guide/he/index.txt
  25. +28 −28 docs/guide/he/quickstart.installation.txt
  26. +70 −68 docs/guide/he/toc.txt
  27. +1 −1  docs/guide/id/topics.url.txt
  28. +2 −2 docs/guide/ja/topics.url.txt
  29. +1 −1  docs/guide/pl/basics.component.txt
  30. +6 −1 docs/guide/pl/changes.txt
  31. +3 −1 docs/guide/pl/database.arr.txt
  32. +1 −1  docs/guide/pl/form.builder.txt
  33. +2 −2 docs/guide/pl/form.table.txt
  34. +3 −3 docs/guide/pl/quickstart.first-app-yiic.txt
  35. +1 −1  docs/guide/pl/quickstart.first-app.txt
  36. +2 −1  docs/guide/pl/toc.txt
  37. +95 −2 docs/guide/pl/topics.theming.txt
  38. +1 −1  docs/guide/pl/topics.url.txt
  39. +1 −1  docs/guide/ru/basics.application.txt
  40. +21 −21 docs/guide/ru/basics.component.txt
  41. +18 −18 docs/guide/ru/basics.convention.txt
  42. +7 −2 docs/guide/ru/changes.txt
  43. +49 −46 docs/guide/ru/database.arr.txt
  44. +3 −3 docs/guide/ru/form.builder.txt
  45. +10 −10 docs/guide/ru/form.table.txt
  46. +3 −3 docs/guide/ru/quickstart.first-app-yiic.txt
  47. +237 −238 docs/guide/ru/quickstart.first-app.txt
  48. +2 −1  docs/guide/ru/toc.txt
  49. +3 −3 docs/guide/ru/topics.performance.txt
  50. +1 −1  docs/guide/ru/topics.prado.txt
  51. +120 −23 docs/guide/ru/topics.theming.txt
  52. +23 −23 docs/guide/ru/topics.url.txt
  53. +1 −1  docs/guide/sv/basics.component.txt
  54. +4 −1 docs/guide/sv/database.arr.txt
  55. +1 −1  docs/guide/sv/form.builder.txt
  56. +2 −2 docs/guide/sv/form.table.txt
  57. +4 −4 docs/guide/sv/quickstart.first-app-yiic.txt
  58. +1 −1  docs/guide/sv/quickstart.first-app.txt
  59. +2 −1  docs/guide/sv/toc.txt
  60. +101 −3 docs/guide/sv/topics.theming.txt
  61. +1 −1  docs/guide/sv/topics.url.txt
  62. +3 −3 docs/guide/vi/basics.entry.txt
  63. +108 −0 docs/guide/zh_cn/database.ar.txt
  64. +5 −5 framework/messages/de/yii.php
  65. +2 −0  framework/messages/de/zii.php
  66. +24 −20 framework/messages/el/yii.php
  67. +4 −2 framework/messages/el/zii.php
  68. +5 −5 framework/messages/ru/yii.php
  69. +2 −0  framework/messages/ru/zii.php
  70. +2 −1  framework/views/bg/error400.php
  71. +36 −36 framework/views/pl/error.php
  72. +32 −32 framework/views/pl/error400.php
  73. +31 −31 framework/views/pl/error403.php
  74. +32 −32 framework/views/pl/error404.php
  75. +34 −34 framework/views/pl/error500.php
  76. +30 −30 framework/views/pl/error503.php
  77. +73 −73 framework/views/pl/exception.php
  78. +22 −22 framework/views/pl/log-firebug.php
  79. +40 −40 framework/views/pl/log.php
  80. +18 −18 framework/views/pl/profile-callstack-firebug.php
  81. +29 −29 framework/views/pl/profile-callstack.php
  82. +22 −22 framework/views/pl/profile-summary-firebug.php
  83. +40 −40 framework/views/pl/profile-summary.php
  84. +26 −36 requirements/messages/bg/yii.php
View
4 docs/blog/pl/post.create.txt
@@ -42,7 +42,7 @@ Na początek zmienimy plik `_form.php`, tak że formularz HTML będzie zbierał
~~~
[php]
-<?php echo $form->dropDownList($post,'status',Lookup::items('PostStatus')); ?>
+<?php echo $form->dropDownList($model,'status',Lookup::items('PostStatus')); ?>
~~~
W powyższym kodzie wywołujemy `Lookup::items('PostStatus')` aby zwrócić listę statusów postu.
@@ -93,4 +93,4 @@ W trakcie implementacji potrzebujemy wiedzieć jakie są stare tagi dlatego, że
Nie będziemy tutaj wchodzić w szczegóły metod `Tag::updateFrequency()`. Zainteresowani tym czytelnicy mogą zajrzeć do pliku `/wwwroot/yii/demos/blog/protected/models/Tag.php`.
-<div class="revision">$Id: post.create.txt 1753 2010-01-25 18:25:03Z qiang.xue $</div>
+<div class="revision">$Id: post.create.txt 2120 2010-05-10 01:29:41Z qiang.xue $</div>
View
6 docs/blog/pl/post.display.txt
@@ -71,7 +71,7 @@ public function actionIndex()
$dataProvider=new CActiveDataProvider('Post', array(
'pagination'=>array(
- 'pageSize'=>Yii::app()->params['postsPerPage'],
+ 'pageSize'=>5,
),
'criteria'=>$criteria,
));
@@ -86,7 +86,7 @@ W powyższym kodzie, tworzymy najpierw kryteria zapytania służące otrzyaniu l
W przypadku kiedy użytkownik chce zobaczyć wiadomości z określonym tagiem, dodamy warunek przeszukiwania do kryteriów uwzględniający ten tag.
-Używając kryteria zapytań, tworzymy dostawcę danych (ang. data provider), który służy głównie do trzech celów. Po pierwsze, dzieli dane na strony jeśli zbyt wiele wyników zostanie zwróconych. Tutaj dostosowujemy stronicowanie poprzez ustawienie rozmiaru strony równego parametrowi aplikacji `postsPerPage` (wiadomości na stronę). Po drugie, sortuje on w zależności od żądania użytkownika. I wreszcie, dostarcza podzielone na strony oraz posortowane dane do widżetu lub kodu widoku w celu wyświetlenia.
+Używając kryteria zapytań, tworzymy dostawcę danych (ang. data provider), który służy głównie do trzech celów. Po pierwsze, dzieli dane na strony jeśli zbyt wiele wyników zostanie zwróconych. Tutaj dostosowujemy stronicowanie poprzez ustawienie rozmiaru strony równego 5. Po drugie, sortuje on w zależności od żądania użytkownika. I wreszcie, dostarcza podzielone na strony oraz posortowane dane do widżetu lub kodu widoku w celu wyświetlenia.
Po zakończeniu prac z metodą `actionIndex()`, możemy przejść do modyfikacji widoku `index`. Nasze zmiany wiążą się głównie z dodanie nagłówka `h1` jeśli użytkownik określił, że chce wyświetlić wiadomości o określonym tagu.
@@ -105,4 +105,4 @@ Po zakończeniu prac z metodą `actionIndex()`, możemy przejść do modyfikacji
Zauważ, że w powyższym kodzie używamy [CListView] do wyświetlenia listy wiadomości. Widżet ten potrzebuje częściowego widoku do wyświetlenia szczegółów pojedynczych wiadomości. Tutaj określiliśmy ten częściowy widok jako `_view`, co wskazuje na plik `/wwwroot/blog/protected/views/post/_view.php`. W tym pliku widoku, mamy dostęp do instancji wiadomości, która jest wyświetlana poprzez lokalną zmienną o nazwie `$data`.
-<div class="revision">$Id: post.display.txt 1810 2010-02-18 00:24:54Z qiang.xue $</div>
+<div class="revision">$Id: post.display.txt 2121 2010-05-10 01:31:30Z qiang.xue $</div>
View
20 docs/blog/pl/post.model.txt
@@ -45,7 +45,9 @@ public function normalizeTags($attribute,$params)
}
~~~
-Reguły zadeklarowane w tej metodzie są wywoływane jedna po drugiej podczas wywoływania metody [validate()|CModel::validate] lub [save()|CActiveRecord::save] dla instancji modelu.
+gdzie metody `array2string` oraz `string2array` są nowymi metodami zdefiniowanymi w klasie modelu `Tag`. Aby zobaczyć więcej szczegółów zajrzyj do pliku `/wwwroot/yii/demos/blog/protected/models/Tag.php`.
+
+Reguły zadeklarowane w metodzie `rules()` są wywoływane jedna po drugiej podczas wywoływania metody [validate()|CModel::validate] lub [save()|CActiveRecord::save] dla instancji modelu.
> Note|Uwaga: Niezmiernie ważnym jest aby zapamiętać, że atrybuty które pojawiły się w metodzie `rules()` były tymi, które są wprowadzane przez użytkownika. Pozostałe atrybuty takie jak `id` oraz czas utworzenia `create_time` w modelu wiadomości `Post`, które są ustawiane przez nasz kod lub też bazę danych, nie powinny się znajdować w metodzie `rules()`. Aby uzyskać więcej informacji o tym, proszę zajrzeć do [zabezpieczanie przypisywania atrybutów](http://www.yiiframework.com/doc/guide/form.model#securing-attribute-assignments).
@@ -74,7 +76,19 @@ public function relations()
}
~~~
-Powyższe relacje stwierdzają, że:
+Wprowadzamy również w klasie modelu komentarza `Comment` dwie poniższe stałe, które są używanie w metodzie powyżej:
+
+~~~
+[php]
+class Comment extends CActiveRecord
+{
+ const STATUS_PENDING=1;
+ const STATUS_APPROVED=2;
+ ......
+}
+~~~
+
+Relacje zadeklarowanie w metodzi `relations()` ozczanają, że:
* Wiadomość należy do autora, którego reprezentuje klasa `User` a relacja pomiędzy nimi zostaje określona w oparciu o wartość atrybutu `author_id` wiadomości;
* Wiadomość posiada wiele komentarzy, które reprezentuje klasa `Comment` a relacja pomiędzy nimi zostaje określona w oparciu o wartość atrybutu `post_id` tych komentarzy. Komentarze te powinny zostać posortowane odpowiednio do czasu ich utworzenia.
@@ -183,4 +197,4 @@ class Post extends CActiveRecord
Dlatego też możemy wywołać metodę `Lookup::items('PostStatus')` aby uzyskać listę możliwych statusów wiadomości (łańcuchy tekstowe indeksowane przez odpowiadające im wartości całkowite) jak również wywoływać metodę `Lookup::item('PostStatus', Post::STATUS_PUBLISHED)` aby otrzymać łańcuch reprezentujący status "opublikowany".
-<div class="revision">$Id: post.model.txt 1774 2010-02-01 18:45:19Z qiang.xue $</div>
+<div class="revision">$Id: post.model.txt 2119 2010-05-10 01:27:29Z qiang.xue $</div>
View
4 docs/blog/ru/final.url.txt
@@ -16,7 +16,7 @@ URL, связывающие различные страницы нашего п
Стоит отметить, что во втором случае мы включили заголовок в URL. Сделано это прежде
всего для SEO. Считается, что поисковые машины могут индексировать слова в URL.
-
+
Для достижения нашей цели, изменим
[конфигурацию приложения](/doc/guide/ru/basics.application#application-configuration)
следующим образом:
@@ -59,4 +59,4 @@ GET-параметр `tag` со значением `yii`. С другой сто
конфигурации приложения. За деталями обратитесь к разделу
[красивые адреса URL](/doc/guide/ru/topics.url) руководства.
-<div class="revision">$Id: final.url.txt 1808 2010-02-17 21:49:42Z qiang.xue $</div>
+<div class="revision">$Id: final.url.txt 2240 2010-07-03 18:06:11Z alexander.makarow $</div>
View
2  docs/blog/ru/portlet.menu.txt
@@ -90,7 +90,7 @@ class UserMenu extends CPortlet
~~~
-В коде выше мы называем метод `widget()` для генерации и выполнения экземпляра
+В коде выше мы вызываем метод `widget()` для генерации и выполнения экземпляра
класса `UserMenu`. Поскольку портлет должен отображаться только
аутентифицированным пользователям, мы вызываем `widget()` в случае, если
свойство `isGuest` текущего пользователя равно `false` (то есть пользователь
View
4 docs/blog/ru/post.create.txt
@@ -62,7 +62,7 @@ public function accessRules()
~~~
[php]
-<?php echo $form->dropDownList($post,'status',Lookup::items('PostStatus')); ?>
+<?php echo $form->dropDownList($model,'status',Lookup::items('PostStatus')); ?>
~~~
В приведённом коде для получения списка статусов используется вызов `Lookup::items('PostStatus')`.
@@ -122,4 +122,4 @@ protected function afterFind()
Заинтересованные читатели могут ознакомиться с ним в файле
`/wwwroot/yii/demos/blog/protected/models/Tag.php`.
-<div class="revision">$Id: post.create.txt 1753 2010-01-25 18:25:03Z qiang.xue $</div>
+<div class="revision">$Id: post.create.txt 2120 2010-05-10 01:29:41Z qiang.xue $</div>
View
6 docs/blog/ru/post.display.txt
@@ -89,7 +89,7 @@ public function actionIndex()
$dataProvider=new CActiveDataProvider('Post', array(
'pagination'=>array(
- 'pageSize'=>Yii::app()->params['postsPerPage'],
+ 'pageSize'=>5,
),
'criteria'=>$criteria,
));
@@ -111,7 +111,7 @@ public function actionIndex()
Используя критерий мы создаём провайдер данных, нужный для трёх целей. Во-первых,
он занимается постраничной разбивкой данных. Мы задаём количество результатов на
-страницу в параметре `postsPerPage`. Во-вторых, данные сортируются в соответствии
+страницу равным 5. Во-вторых, данные сортируются в соответствии
с запросом пользователя. И, наконец, провайдер отдаёт разбитые на страницы
отсортированные данные виджетам или отображению.
@@ -138,4 +138,4 @@ public function actionIndex()
`/wwwroot/blog/protected/views/post/_view.php`, в котором мы можем
обращаться к записи через переменную `$data`.
-<div class="revision">$Id: post.display.txt 1810 2010-02-18 00:24:54Z qiang.xue $</div>
+<div class="revision">$Id: post.display.txt 2121 2010-05-10 01:31:30Z qiang.xue $</div>
View
24 docs/blog/ru/post.model.txt
@@ -18,7 +18,7 @@
убедится в том, что данные, введённые пользователем, корректны до их сохранения в БД.
К примеру, атрибут `status` модели `Post` должен быть целым числом, равным 1, 2 или 3.
Консоль `yiic` генерирует правила валидации для каждой модели. При этом
-используется структура БД, поэтому некоторые правила могу оказаться неточными.
+используется структура БД, поэтому некоторые правила могут оказаться неточными.
Основываясь на анализе требований, изменим метод `rules()` следующим образом:
@@ -60,7 +60,10 @@ public function normalizeTags($attribute,$params)
}
~~~
-Правила, описанные в этом методе вызываются по очереди при вызове методов модели
+где `array2string` и `string2array` — новые методы, определённые в классе
+модели `Tag` в файле `/wwwroot/yii/demos/blog/protected/models/Tag.php`.
+
+Правила, описанные в методе `rules()`, вызываются по очереди при вызове методов модели
[validate()|CModel::validate] или [save()|CActiveRecord::save].
> Note|Примечание: Важно помнить, что атрибуты, описываемые в `rules()`
@@ -98,7 +101,20 @@ public function relations()
}
~~~
-Выше описано следующее:
+Также, в классе модели `Comment` мы описываем две константы, которые используются
+в приведённом выше методе:
+
+~~~
+[php]
+class Comment extends CActiveRecord
+{
+ const STATUS_PENDING=1;
+ const STATUS_APPROVED=2;
+ ......
+}
+~~~
+
+Отношения, описанные в методе `relations()`, означают следующее:
* Запись принадлежит автору(`User`), связь с которым устанавливается на основе
поля записи `author_id`;
@@ -230,4 +246,4 @@ class Post extends CActiveRecord
`Lookup::items('PostStatus')`. А для получения конкретной строки — кодом
`Lookup::item('PostStatus', Post::STATUS_PUBLISHED)`.
-<div class="revision">$Id: post.model.txt 1774 2010-02-01 18:45:19Z qiang.xue $</div>
+<div class="revision">$Id: post.model.txt 2119 2010-05-10 01:27:29Z qiang.xue $</div>
View
165 docs/blog/ru/prototype.scaffold.txt
@@ -4,77 +4,80 @@
Create, read, update и delete (CRUD) — четыре основных операции, при помощи
которых можно управлять объектами данных. Так как реализация CRUD является
типичной задачей для любого веб-приложения, для автоматизации можно воспользоваться
-специальным инструментом Yii (также известным как *скаффолдинг*). В этом разделе
-мы опишем, как использовать данный инструмент для реализации CRUD записей и
-комментариев.
+специальными инструментами для генерации кода *Gii* (также известным как *скаффолдинг*).
+
+> Note|Примечание: Gii доступен начная с версии 1.1.2. До этого мы бы использовали
+[yiic shell](/doc/guide/ru/quickstart.first-app-yiic).
+
+Далее мы опишем как использовать данный инструмент для реализации операций CRUD
+записей и комментариев нашего блога.
+
+Установка Gii
+-------------
+
+Для начала необходимо установить Gii. Открываем файл
+`/wwwroot/blog/protected/config/main.php` и добавляем следующее:
-Откроем командную строку и выполним следующие команды:
~~~
-% /wwwroot/yii/framework/yiic shell /wwwroot/blog/index.php
-Yii Interactive Tool v1.1
-Please type 'help' for help. Type 'exit' to quit.
->> model *
-…
->> crud Post
-…
->> crud Comment
-…
->> exit
+[php]
+return array(
+ ......
+ 'import'=>array(
+ 'application.models.*',
+ 'application.components.*',
+ ),
+
+ 'modules'=>array(
+ 'gii'=>array(
+ 'class'=>'system.gii.GiiModule',
+ 'password'=>'ваш пароль',
+ ),
+ ),
+);
~~~
-> Info|Информация: Некоторые установленные копии PHP могут использовать другой
-> файл `php.ini` для PHP анализатора командной строки (CLI). В результате
-> выполнения команд выше, Вы можете столкнуться с такими ошибками
-> как «YiiBase::include(PDO.php): failed to open stream…» или «…could
-> not find driver». Дважды проверьте свою конфигурацию PHP CLI,
-> выполнив следующую команду:
->
-> ~~~
-> php -i
-> ~~~
->
-> Результат команды покажет, какой файл `php.ini` используется и какие
-> расширения загружены. Если используется неправильный файл `php.ini`,
-> можно использовать следующую команду, чтобы явно задать нужный
-> файл `php.ini`:
->
-> ~~~
-> php -c php.ini /wwwroot/yii/framework/yiic.php shell /wwwroot/blog/index.php
-> ~~~
-
-Команды выше выполняют две задачи. Команда `model` генерируют файл
-класса [модели](/doc/guide/ru/basics.model) для каждой таблицы базы данных `blog`.
-Команды `CRUD` генерируют код, необходимый операциям CRUD для
-моделей `Post` и `Comment`.
-
-> Tip|Подсказка: Команда `model *` генерирует классы моделей для *каждой* таблицы
-в базе данных. В некоторых случаях это не нужно (например, если в БД содержатся
-не относящиеся к приложению таблицы). В этом случае мы можем сгенерировать классы
-моделей по одному. К примеру, для того, чтобы создать модель `User`, мы можем
-использовать команду `model User`. Команда `model` имеет некоторые дополнительные
-параметры. Информацию о них можно получить командой `help model`.
-
-Мы можем проверить сгенерированный код, перейдя по следующим URL:
+Код выше включает модуль с именем `gii`, который позволяет нам использовать
+Gii по следующему URL:
~~~
-http://www.example.com/blog/index.php?r=post
-http://www.example.com/blog/index.php?r=comment
+http://www.example.com/blog/index.php?r=gii
~~~
-Заметим, что возможности записей и комментариев, реализованные в сгенерированном
-коде, полностью независимы друг от друга. При создании новой записи или
-комментария, мы обязаны вводить информацию, такую как `author_id` и `create_time`,
-которая в реальном приложении должна устанавливаться программой.
-Мы устраним эти проблемы на следующих этапах. На данном этапе прототип уже содержит
-большинство возможностей, которые мы должны реализовать в нашем приложении.
+Будет запрошен пароль, который мы указали в
+`/wwwroot/blog/protected/config/main.php`. После этого будет показана страница
+со всеми доступными инструментами генерации кода.
+
+> Note|Примечание: Код, приведённый выше не должен попасть на сервер.
+Инструменты для генерации кода должны использоваться только при разработке.
+
+
+Создание моделей
+----------------
+
+Для начала нам необходимо создать [классы моделей](/doc/guide/ru/basics.model)
+для каждой из таблиц в БД. Эти классы позволят нам работать с БД в стиле ООП,
+что будет показано далее в данном руководстве.
+
+Запускаем `Model Generator`. На странице вводим `tbl_user` (имя таблицы,
+хранящей пользователей) в поле `Table Name` и нажимаем кнопку `Preview`.
+Будет показана таблица, ссылки в которой позволят просмотреть код, который мы
+собираемся сгенерировать. Если всё в порядке, можно нажимать `Generate`. При этом
+код будет сохранён в файл.
+
+> Info|Информация: Так как генератору кода необходимо сохранить код в файлы,
+процесс должен иметь права на создание и изменение соответствующих файлов.
+Проще всего дать процессу права на запись во всю директорию `/wwwroot/blog`.
+Стоит отметить, что это требуется сделать только на машине разработчика
+при использовании `Gii`.
+
+Повторим те же действия для всех остальных таблиц БД, включая
+`table_post`, `tbl_comment`, `tbl_tag` и `tbl_lookup`.
+
+> Tip|Подсказка: Также мы можем ввести '\*' в поле `Table Name`. Так мы сгенерируем
+модели для *каждой* таблицы БД за один раз.
-Чтобы подготовиться к следующим этапам, давайте поближе познакомимся с
-содержимым сгенерированных файлов. Все сгенерированые файлы расположены в директории
-`/wwwroot/blog/protected`. Для удобства мы разделяем их на
-[модели](/doc/guide/ru/basics.model), [контроллеры](/doc/guide/ru/basics.controller)
-и [представления](/doc/guide/ru/basics.view):
+На данном этапе у нас будут созданиы следующие файлы:
- - файлы моделей:
* `models/User.php` содержит класс `User`, который наследуется от
[CActiveRecord] и может использоваться для обращения к таблице `tbl_user`;
* `models/Post.php` содержит класс `Post`, который наследуется от
@@ -84,7 +87,22 @@ http://www.example.com/blog/index.php?r=comment
* `models/Comment.php` содержит класс `Comment`, который наследуется от
[CActiveRecord] и может использоваться для обращения к таблице `tbl_comment`;
* `models/Lookup.php` содержит класс `Lookup`, который наследуется от
- [CActiveRecord] и может использоваться для обращения к таблице `tbl_lookup`;
+ [CActiveRecord] и может использоваться для обращения к таблице `tbl_lookup`.
+
+Реализация операций CRUD
+------------------------
+
+После того, как были созданы классы модели, мы можем использовать `Crud Generator`
+для генерации кода операций CRUD для них. Сделаем это для моделей `Post` и `Comment`.
+
+На странице `Crud Generator` введём `Post` (имя модели записи блога, которую мы
+создали ранее) в поле `Model Class` и нажмём `Preview`, а затем `Generate`.
+
+Повторим эти же действия для модели `Comment`.
+
+Рассмотрим сгенерированные файлы в `/wwwroot/blog/protected`. Для удобства
+сгруппируем их в [файлы контроллеров](/doc/guide/ru/basics.controller) и
+[файлы представлений](/doc/guide/ru/basics.view):
- файлы контроллеров:
* `Controllers/PostController.php` содержит класс `PostController`, который
@@ -111,12 +129,29 @@ http://www.example.com/blog/index.php?r=comment
Используется для формы поиска.
* Подобный набор файлов представлений также сгенерирован для комментариев.
+Тестирование
+------------
+
+Мы можем проверить работу сгенерированного кода, используя следующие URL:
+
+~~~
+http://www.example.com/blog/index.php?r=post
+http://www.example.com/blog/index.php?r=comment
+~~~
+
+Стоит отметить, что возможности по управлению записями и комментариями полностью
+независимы. Также, при создании новой записи или комментария необхордимо вводить
+такие данные, как `author_id` и `create_time`, что в реальном приложении должно
+делаться автоматически. Не беспокойтесь, мы исправим эти проблемы далее.
+На данный момент прототип уже содержит большинство возможностей, необходимых
+нашему блогу.
+
Чтобы лучше понять, как используются файлы выше, рассмотрим, что происходит
при отображении списка записей:
0. Пользователь запрашивает URL `http://www.example.com/blog/index.php?r=post`;
- 1. [Входной скрипт](basics.entry) выполняется Web-сервером и инициализирует экземпляр
- [приложения](basics.application) для обработки запроса;
+ 1. [Входной скрипт](/doc/guide/ru/basics.entry) выполняется Web-сервером и инициализирует экземпляр
+ [приложения](/doc/guide/ru/basics.application) для обработки запроса;
2. Приложение создает экземпляр класса `PostController` и выполняет его;
3. Экземпляр класса `PostController` выполняет действие `index` (метод `actionIndex()`).
Отметим, что `index` является действием по умолчанию и используется в случае,
@@ -125,4 +160,4 @@ http://www.example.com/blog/index.php?r=comment
5. Метод `actionIndex()` генерирует представление `index` с данными записей.
-<div class="revision">$Id: prototype.scaffold.txt 1947 2010-03-21 20:41:36Z alexander.makarow $</div>
+<div class="revision">$Id: prototype.scaffold.txt 2243 2010-07-03 19:05:48Z alexander.makarow $</div>
View
2  docs/guide/de/basics.component.txt
@@ -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 1474 2009-10-18 21:13:52Z qiang.xue $</div>
+<div class="revision">$Id: basics.component.txt 2181 2010-06-14 20:01:23Z qiang.xue $</div>
View
7 docs/guide/de/changes.txt
@@ -3,6 +3,11 @@ Neue Features
Diese Seite fasst die wesentlichen neuen Features jeder Yii-Version zusammen.
+Version 1.1.3
+-------------
+
+ * [Standardwerte für Widget-Eigenschaften können nun auch in der Anwendungskonfiguration definiert werden](/doc/guide/theming#customizing-widgets-globally)
+
Version 1.1.2
-------------
@@ -118,4 +123,4 @@ Version 1.0.5
* [CUrlManager] unterstützt nun das Parametrisieren des Routenteils einer URL. Siehe:
- [Parametrisierte Routen in URL-Regeln](/doc/guide/topics.url#parameterizing-routes)
-<div class="revision">$Id: changes.txt 2040 2010-04-11 02:48:52Z qiang.xue $</div>
+<div class="revision">$Id: changes.txt 2217 2010-06-22 23:51:05Z qiang.xue $</div>
View
5 docs/guide/de/database.arr.txt
@@ -271,6 +271,9 @@ Version 1.0.3 verfügbar.
- `group`: Die `GROUP BY` Klausel, standardmäßig leer. Spaltennamen
sollten eindeutig gekennzeichnet werden.
+ - `join`: Zusätzlicher `JOIN`, standardmäßig leer. Diese Option ist seit
+Version 1.1.3 verfügbar.
+
- `having`: Die `HAVING` Klausel, standarmäßig leer. Spaltennamen
sollten eindeutig gekennzeichnet werden. Diese Option ist seit Version 1.0.1. verfügbar.
@@ -592,4 +595,4 @@ class User extends CActiveRecord
verwendet werden, die in [CActiveRecord::scopes] definiert wurden. Daher
können diese hier auch nicht parametrisiert werden.
-<div class="revision">$Id: database.arr.txt 2068 2010-04-22 16:42:16Z alexander.makarow $</div>
+<div class="revision">$Id: database.arr.txt 2226 2010-06-25 18:12:01Z qiang.xue $</div>
View
2  docs/guide/de/form.builder.txt
@@ -499,4 +499,4 @@ noch fast genauso viel Code wie bisher braucht. Trotzdem kann sich der Einsatz
lohnen, da das Formular in einer separaten Datei definiert wird und sich
der Entwickler so besser auf die Logik konzentrieren kann.
-<div class="revision">$Id: form.builder.txt 1849 2010-03-01 15:54:34Z qiang.xue $</div>
+<div class="revision">$Id: form.builder.txt 2232 2010-06-26 22:42:03Z qiang.xue $</div>
View
2  docs/guide/de/form.table.txt
@@ -68,4 +68,4 @@ statt `"name"` verwendet wird.
Genau wie beim View für einfache Models werden auch hier die fehlerhaften
Eingabefelder automatisch hervorgehoben.
-<div class="revision">$Id: form.table.txt 1622 2009-12-26 20:56:05Z qiang.xue $</div>
+<div class="revision">$Id: form.table.txt 2232 2010-06-26 22:42:03Z qiang.xue $</div>
View
8 docs/guide/de/quickstart.first-app-yiic.txt
@@ -1,5 +1,5 @@
-CRUD-Operationen mit der `yiic shell` erstellen
-===============================================
+Codegenerierung an der Kommandozeile (veraltet)
+====================================
> Note|Hinweis: Seit Version 1.1.2 wird die Codegenerierung mit `yiic shell`
> nicht mehr empfohlen. Verwenden Sie stattdessen den leistungsfähigeren
@@ -9,7 +9,7 @@ CRUD-Operationen mit der `yiic shell` erstellen
~~~
% cd WebVerzeichnis/testdrive
-% YiiVerzeichnis/framework/yiic shell
+% protected/yiic shell
Yii Interactive Tool v1.1
Please type 'help' for help. Type 'exit' to quit.
>> model User tbl_user
@@ -100,4 +100,4 @@ schreiben zu müssen!
![Seite zum Erstellen eines neuen Benutzers](first-app7.png)
-<div class="revision">$Id: quickstart.first-app-yiic.txt 2041 2010-04-11 03:54:25Z qiang.xue $</div>
+<div class="revision">$Id: quickstart.first-app-yiic.txt 2098 2010-05-05 19:49:51Z qiang.xue $</div>
View
6 docs/guide/de/quickstart.first-app.txt
@@ -19,8 +19,8 @@ Starten Sie `yiic` von der Kommandozeile wie folgt:
> können sie den Befehl auch wie folgt aufrufen:
>
> ~~~
-> % cd WebVerzeichnis/testdrive
-> % php YiiVerzeichnis/framework/yiic.php webapp WebVerzeichnis/testdrive
+> % cd WebVerzeichnis
+> % php YiiVerzeichnis/framework/yiic.php webapp testdrive
> ~~~
Damit wird im Verzeichnis `WebVerzeichnis/testdrive` die Grundstruktur einer
@@ -263,4 +263,4 @@ schreiben zu müssen!
![Seite zum Erstellen eines neuen Benutzers](first-app7.png)
-<div class="revision">$Id: quickstart.first-app.txt 2041 2010-04-11 03:54:25Z qiang.xue $</div>
+<div class="revision">$Id: quickstart.first-app.txt 2125 2010-05-11 23:36:02Z alexander.makarow $</div>
View
3  docs/guide/de/toc.txt
@@ -65,5 +65,6 @@
- [Konsolenanwendungen](topics.console)
- [Sicherheit](topics.security)
- [Performance-Optimierung](topics.performance)
+ - [Codegenerierung an der Kommandozeile (veraltet)](quickstart.first-app-yiic)
-<div class="revision">$Id: toc.txt 2040 2010-04-11 02:48:52Z qiang.xue $</div>
+<div class="revision">$Id: toc.txt 2098 2010-05-05 19:49:51Z qiang.xue $</div>
View
34 docs/guide/de/topics.logging.txt
@@ -1,18 +1,18 @@
Protokollierung (Logging)
=========================
-Yii bietet eine flexibles und erweiterbares Logfeature.
-Zu loggende (also zu protokollierende) Meldungen können einer
-Logstufe (engl.: log level) und einer Kategorie zugeordnet werden. Zusammen mit
-Logstufen- und Kategoriefiltern können ausgewählte
-Meldungen an verschiedene Ziele, wie z.B. Dateien, E-Mails,
-Browserfenster etc., weitergeleitet werden
+Yii bietet eine flexibles und erweiterbares Logfeature. Zu loggende
+(also zu protokollierende) Meldungen können einer
+Logstufe (engl.: log level) und einer Kategorie zugeordnet werden. Mit diesen
+Logstufen und Kategoriefiltern können bestimmte Meldungen jeweils
+an verschiedene Ziele, wie z.B. Dateien, E-Mails, Browserfenster etc.,
+weitergeleitet werden
Loggen von Meldungen
--------------------
-Ein Logeintrag kann entweder mit [Yii::log] oder [Yii::trace] angelegt werden.
-Der Unterschied zwischen beiden besteht darin, dass `Yii::trace` nur im
+Ein Logeintrag kann entweder mit [Yii::log] oder [Yii::trace] angelegt werden.
+Der Unterschied zwischen beiden besteht darin, dass `Yii::trace` nur im
[Debug-Modus](/doc/guide/basics.entry#debug-mode) loggt.
~~~
@@ -21,7 +21,7 @@ Yii::log($message, $level, $category);
Yii::trace($message, $category);
~~~
-Beim Loggen einer Meldung muss eine Kategorie und eine Stufe angegeben werden.
+Beim Loggen einer Meldung muss eine Kategorie und eine Stufe angegeben werden.
Die Kategorie ist ein String im Format `xxx.yyy.zzz`, ähnlich einem
[Pfadalias](/doc/guide/basics.namespace). Wenn eine Meldung zum
Beispiel in [CController] geloggt wird, könnten wir die Kategorie
@@ -29,7 +29,7 @@ Beispiel in [CController] geloggt wird, könnten wir die Kategorie
Werte entpsrechen:
- `trace`: Diese Stufe wird von [Yii::trace] verwendet. Sie dient zum
-Nachverfolgen (engl.: trace) des Programmablaufs während der Entwicklungsphase.
+Nachverfolgen (engl.: trace) des Programmablaufs während der Entwicklungsphase.
- `info`: dient zum Loggen allgemeiner Informationen.
@@ -45,13 +45,13 @@ Routing von Logeinträgen
Mit [Yii::log] oder [Yii::trace] geloggte Meldungen werden im Speicher
gehalten. Für gewöhnlich sollen diese im Browserfenster angezeigt oder in einem
beständigen Speicher wie Dateien oder E-Mails gespeichert werden. Dies nennt
-man auch *Routing von Logmeldungen* (engl.: message routing), also das Weiterleiten
+man auch *Routing von Logmeldungen* (engl.: message routing), also das Weiterleiten
der Einträge an bestimmte Zielorte.
In Yii wird das Routing von einer
[CLogRouter]-Anwendungskomponente (sinngem.: Logmeldungs-Weiterleiter) übernommen.
Sie verwaltet eine Reihe sogenannter *Logrouten* (engl.: log routes).
-Jede Logroute steht für ein einzelnes Log-Ziel. Meldungen, die
+Jede Logroute steht für ein einzelnes Log-Ziel. Meldungen, die
über eine Logroute geschickt werden, können nach Stufe und Kategorie
gefiltert werden.
@@ -113,7 +113,7 @@ die Bearbeitung des aktuellen Requests explizit zu beenden, rufen Sie
[CApplication::end()] das [onEndRequest|CApplication::onEndRequest]-Event
auslöst und somit Logmeldungen ordnungsgemäß geloggt werden können.
-### Filtern von Logmeldungen
+### Filtern von Logmeldungen
Wie erwähnt, können Logeinträge nach ihrer Stufe und ihrer Kategorie gefiltert
werden, bevor sie an eine Logroute geleitet werden. Dies geschieht,
@@ -124,7 +124,7 @@ setzt. Mehrere Stufen oder Kategorien sollten mit Kommas verbunden werden.
Da Logkategorien im Format `xxx.yyy.zzz` vorliegen, können wir sie wie
eine Hierarchie von Kategorien behandeln. In diesem Fall können wir sagen, `xxx`
ist die Elternkategorie von `xxx.yyy`, welche wiederum die Elternkategorie von
-`xxx.yyy.zzz` bildet. Wir können `xxx.*` verwenden, um die Kategorie
+`xxx.yyy.zzz` bildet. Wir können `xxx.*` verwenden, um die Kategorie
`xxx` und all ihre Kind- und Enkelkategorien darzustellen.
### Loggen von Kontextinformationen
@@ -187,10 +187,10 @@ Performance-Analyse
Bei der Performance-Analyse(engl.: performance profiling) handelt es sich
um eine spezielle Logart. Mit ihr kann man die Zeit messen, die ein bestimmter
-Codeblock zur Ausführung benötigt und so den leistungsmäßigen Flaschenhals
+Codeblock zur Ausführung benötigt und so den leistungsmäßigen Flaschenhals
in einer Anwendung ausfindig machen.
-Für die Performance-Analysse müssen die zu analysierenden Codeblöcke erst
+Für die Performance-Analyse müssen die zu analysierenden Codeblöcke erst
identifiziert werden. Mit folgenden beiden Methoden können Anfang und Ende
jedes Blocks markiert werden:
@@ -226,7 +226,7 @@ messen, bietet Yii seit Version 1.0.6 eine systematischere Herangehensweise,
um dieses Problem zu lösen.
Indem [CDbConnection::enableProfiling] in der Anwendungskonfiguration auf true
-gesetzt wird, wird jede SQL-Anweisung gemessen. Mit der erwähnten [CProfileLogRoute]
+gesetzt wird, wird jede SQL-Anweisung gemessen. Mit der erwähnten [CProfileLogRoute]
können die Ergebnisse leicht aufgegliedert nach den einzelnen SQL-Anweisungen
und den dafür benötigten Zeiten angezeigt werden. Durch Aufruf von
[CDbConnection::getStats()] können wir auch die Gesamtzahl aller
View
162 docs/guide/de/topics.theming.txt
@@ -18,8 +18,8 @@ Eigenschaften [basePath|CThemeManager::basePath] (Basispfad) und
[baseUrl|CThemeManager::baseUrl] (Basis-URL) der
[themeManager|CWebApplication::themeManager]-Anwendungskomponente.
-Setzen Sie die Eigenschaft [theme|CWebApplication::theme] der Webanwendung auf
-den Namen des gewünschten Themes, um ein Theme anzuwenden. Dies kann
+Um ein Theme anzuwenden, setzen Sie die Eigenschaft [theme|CWebApplication::theme]
+der Webanwendung auf den Namen des gewünschten Themes. Dies kann
entweder in der
[Anwendungskonfiguration](/doc/guide/basics.application#application-configuration)
oder während der Laufzeit in einer Controller-Action geschehen.
@@ -32,16 +32,17 @@ Die Inhalte eines Themeverzeichnisses sollten genau wie im
[Anwendungsverzeichnis](/doc/guide/basics.application#application-base-directory)
abgelegt werden. Alle View-Dateien müssen sich zum Beispiel in `views`,
Layout-Dateien in `views/layout` und System-View-Dateien unter `views/system`
-befinden. Wenn wir z.B. den View `create` für `PostController` durch einen
-View des Themes `classic` ersetzen möchten, sollten wir die neue Datei unter
-`WebVerzeichnis/themes/classic/views/post/create.php` ablegen.
+befinden. Möchte man z.B. den View `create` für `PostController` durch einen
+View des Themes `classic` ersetzen, sollte die neue Datei unter
+`WebVerzeichnis/themes/classic/views/post/create.php` abgelegt werden.
Für die View-Dateien eines Controllers, der in einem
[Modul](/doc/guide/basics.module) enthalten ist, sollte die entsprechende
View-Datei des Themes ebenfalls unterhalb des `views`-Verzeichnisses abgelegt
werden. Wenn der genannte `PostController` zum Beispiel in einem Modul namens
-`forum` enthalten ist, sollten wir die View-Datei für `create` unter
-`WebVerzeichnis/themes/classic/views/forum/post/create.php` abspeichern. Falls das
+`forum` enthalten ist, sollte die View-Datei für `create` unter
+`WebVerzeichnis/themes/classic/views/forum/post/create.php` abgespeichert
+werden. Falls das
`forum`-Modul selbst wiederum als verschachteltes Modul in einem Modul namens
`support` enthalten ist, sollte die View-Datei unter
`WebVerzeichnis/themes/classic/views/support/forum/post/create.php` liegen.
@@ -49,18 +50,18 @@ werden. Wenn der genannte `PostController` zum Beispiel in einem Modul namens
> Note|Hinweis: Da das `views`-Verzeichnis sicherheitskritische Daten enthalten
könnte, sollten Sie dafür sorgen, dass es nicht vom Web aus zugänglich ist.
-Wenn wir [render|CController::render] oder
-[renderPartial|CController::renderPartial] zum Anzeigen eines Views aufrufen,
+Beim Aufruf von [render|CController::render] oder
+[renderPartial|CController::renderPartial] zum Anzeigen eines Views,
werden die entsprechenden View- und Layout-Dateien im Verzeichnis des gerade
aktiven Themes gesucht und, falls dort vorgefunden, zum Rendern verwendet.
-Andernfalls werden sie an den Standardorten gesucht, wie mit
+Falls nicht, wird in den üblichen Verzeichnissen gesucht, wie mit
[viewPath|CController::viewPath] und [layoutPath|CWebApplication::layoutPath]
vorgegeben.
-> Tip|Tipp: Innerhalb eines Theme-Views müssen wir evtl. öfter auf andere
-> Ressource-Dateien des Theme verlinken. Zum Beispiel könnten wir eine
-> Bilddatei im Ordner `images` des Themes anzeigen wollen. Mit Hilfe der
-> Eigenschaft [baseUrl|CTheme::baseUrl] des aktuellen Themes können wir die
+> Tip|Tipp: Innerhalb eines Theme-Views muss evtl. öfter auf andere
+> Ressource-Dateien des Theme verlinkt werden. Zum Beispiel um eine
+> Bilddatei im Ordner `images` des Themes anzuzeigen. Mit Hilfe der
+> Eigenschaft [baseUrl|CTheme::baseUrl] des aktuellen Themes kann man die
> Bild-URL wie folgt zusammenbauen:
>
> ~~~
@@ -101,7 +102,7 @@ WebVerzeichnis/
index.php
~~~
-Wenn wir die Anwendung so konfigurieren:
+Konfiguriert man die Anwendung so:
~~~
[php]
@@ -113,17 +114,91 @@ return array(
wird das Theme `basic` verwendet. Das bedeutet, dass das Layout in
`themes/basic/views/layouts` der Index-View in `themes/basics/views/site`
-verwendet wird. Falls eine Viewdatei
-im Theme nicht gefunden wird, wird auf die Datei in `protected/views`
-zurückgegriffen.
+verwendet wird. Falls Yii dort keine Viewdatei findet, verwendet es die
+Datei in `protected/views`.
+
+Widgets global anpassen
+-----------------------
+
+> Note|Hinweis: Dieses Feature steht seit Version 1.1.3 zur Verfügung.
+
+Beim Arbeiten mit Widgets aus Yii oder von anderen Anbietern muss man diese
+häufig an spezifische Bedürfnisse anpassen. Etwa wenn der Wert von
+[CLinkPager::maxButtonCount] nicht 10 (Standard), sondern 5 sein soll.
+Man kann diesen Startwert zwar beim Aufruf von [CBaseController::widget]
+setzen, allerdings muss das dann wiederholt an jeder Stelle geschehen, an der
+[CLinkPager] verwendet wird.
+
+~~~
+[php]
+$this->widget('CLinkPager', array(
+ 'pages'=>$pagination,
+ 'maxButtonCount'=>5,
+ 'cssFile'=>false,
+));
+~~~
+
+Nutzt man das Feature für die globale Anpassung von Widgets, kann man diese Startwerte
+auch zentral in der Konfiguration setzen. Spezifische Widget-Anpassungen
+lassen sich so wesentlich einfacher verwalten.
+
+Dazu muss eine [widgetFactory|CWebApplication::widgetFactory] wie folgt
+konfiguriert werden:
+
+~~~
+[php]
+return array(
+ 'components'=>array(
+ 'widgetFactory'=>array(
+ 'widgets'=>array(
+ 'CLinkPager'=>array(
+ 'maxButtonCount'=>5,
+ 'cssFile'=>false,
+ ),
+ 'CJuiDatePicker'=>array(
+ 'language'=>'ru',
+ ),
+ ),
+ ),
+ ),
+);
+~~~
+
+Damit werden die Starteigenschaften von [CLinkPager] und [CJuiDatePicker] über die
+[CWidgetFactory::widgets]-Eigenschaft bestimmt. Wie Sie sehen, wird dazu ein
+Array mit dem Namen der Widgetklasse als Schlüssel und ein Array mit
+Startwerten als Wert verwendet.
+
+Jedesmal wenn nun ein [CLinkPager] in einem View erstellt wird, werden die
+obigen Eigenschaftswerte zugewiesen. Der Code dafür reduziert sich somit auf:
+
+~~~
+[php]
+$this->widget('CLinkPager', array(
+ 'pages'=>$pagination,
+));
+~~~
+
+Die Eigenschaften können bei Bedarf immer noch überschrieben werden. Soll zum
+Beispiel in einem speziellen View `maxButtonCount` stattdessen auf 2 gesetzt
+werden, kann das wie folgt erreicht werden:
+
+~~~
+[php]
+$this->widget('CLinkPager', array(
+ 'pages'=>$pagination,
+ 'maxButtonCount'=>2,
+));
+~~~
+
Skin
----
> Note|Hinweis: Das Skin-Feature ist seit Version 1.1.0 verfügbar.
-Während wir mit Themes das Aussehen von Views schnell verändern können,
-erlauben uns Skins (sinngem.: Haut, Verkleidung), das Aussehen von
+Während man mit Themes das Aussehen von Views schnell verändern können,
+erlauben Skins (sinngem.: Haut, Verkleidung), das Aussehen von
[Widgets](/doc/guide/basics.view#widget) systematisch anzupassen.
Eine Skin ist ein Array von Name-Wert-Paaren, die zum Initalisieren der
@@ -132,8 +207,23 @@ einer Widgetklasse. Und eine Widgetklasse kann mehrere Skins haben, die über
ihren Namen identifiziert werden können. So kann es zum Beispiel eine Skin
für das [CLinkPager]-Widget namens `classic` geben.
-Um Skins verwenden zu können, müssen wir in der Anwendungskonfiguration die
-Komponente `widgetFactory` (sinngem.: Widget-Fabrik) installieren:
+Um Skins verwenden zu können, richtet man in der Anwendungskonfiguration die
+Komponente [widgetFactory|CWebApplication::widgetFactory] (sinngem.: Widget-Fabrik)
+ein:
+
+~~~
+[php]
+return array(
+ 'components'=>array(
+ 'widgetFactory'=>array(
+ 'enableSkin'=>true,
+ ),
+ ),
+);
+~~~
+
+Bitte beachten Sie, dass man Skins für Widgets vor Version 1.1.3 so
+konfigurieren musste:
~~~
[php]
@@ -146,13 +236,13 @@ return array(
);
~~~
-Danach erstellen wir die benötigten Skins. Alle Skins, die zu einem bestimmten
+Danach müssen die benötigten Skins erstellt werden. Alle Skins, die zu einem bestimmten
Widget gehören, werden gemeinsam in einem PHP-Script mit dem Namen der
Widgetklasse gespeichert. Skindateien werden standardmäßig unter
`protected/views/skins` abgelegt. Wenn Sie dieses Verzeichnis ändern möchten,
können Sie die Eigenschaft `skinPath` der Komponente `widgetFactory` anpassen.
-Als Beispiel legen wir in diesem Verzeichnis die Datei `CLinkPager.php` mit
-folgendem Inhalt an:
+Man kann in diesem Verzeichnis zum Beispiel die Datei `CLinkPager.php` mit
+folgendem Inhalt anlegen:
~~~
[php]
@@ -169,10 +259,10 @@ return array(
);
~~~
-Hier erstellen wir zwei Skins für das [CLinkPager]-Widget: `default` und
-`classic`. Erstere wird für jedes [CLinkPager]-Widget verwendet, bei dem
-keine explizite `skin`-Eigenschaft gesetzt wurde, während zweitere für jene
-[CLinkPager] verwendet wird, bei denen `skin` auf `classic` gesetzt wurde.
+Damit werden zwei Skins für das [CLinkPager]-Widget definiert: `default` und
+`classic`. Erstere wird für alle [CLinkPager]-Widgets verwendet, bei denen
+keine explizite `skin`-Eigenschaft gesetzt wurde. Die zweite wird für jene
+[CLinkPager] verwendet, bei denen `skin` auf `classic` gesetzt wurde.
Der erste Pager im folgenden Beispiel verwendet also die `default`-Skin, der
Zweite die Skin `classic`:
@@ -183,8 +273,8 @@ Zweite die Skin `classic`:
<?php $this->widget('CLinkPager', array('skin'=>'classic')); ?>
~~~
-Wenn wir bei einem Widget einige Eigenschaften direkt setzen, haben diese
-Vorrang und werden mit den Eigenschaften in der Skin zusammengeführt. Der folgende
+Eigenschaften, die direkt beim Anzeigen eines Widgets übergeben werden haben
+Vorrang vor den in der Skin definierten Eigenschaften. Der folgende
Viewcode erzeugt zum Beispiel einen Pager mit den Starteigenschaften
`array('header'=>'', 'maxButtonCount'=>6, 'cssFile'=>false)`, also den
überlagerten Eigenschaften aus dem View und der `classic`-Skin.
@@ -211,4 +301,12 @@ Widget wie gewohnt ohne Fehler.
> Info|Info: Die Verwendung von Skins kann die Performance negativ beeinflussen,
> da Yii beim ersten Einsatz eines Widgets nach Skindateien suchen muss.
-<div class="revision">$Id: topics.theming.txt 1463 2009-10-17 01:49:02Z qiang.xue $</div>
+Skins ähneln dem Feature zur globalen Anpassung von Widgets. Die wesentlichen
+Unterschiede sind:
+
+ - Eine Skin ist eher zur Anpassung der Darstellungseigenschaften gedacht
+ - Ein Widget kan mehrere Skins haben
+ - Eine Skin kann mit einem Theme versehen werden
+ - Skins beeinflußen die Leistung mehr, als Widgets global anzupassen
+
+<div class="revision">$Id: topics.theming.txt 2172 2010-06-07 19:56:01Z qiang.xue $</div>
View
2  docs/guide/de/topics.url.txt
@@ -326,4 +326,4 @@ einer statischen Webseite aus. Setzen Sie dazu einfach die gewünschte Endung
über die Eigenschaft [urlSuffix|CUrlManager::urlSuffix] der
[urlManager|CWebApplication::urlManager]-Komponente.
-<div class="revision">$Id: topics.url.txt 1809 2010-02-17 22:08:34Z qiang.xue $</div>
+<div class="revision">$Id: topics.url.txt 2229 2010-06-25 19:57:54Z poppitypop@gmail.com $</div>
View
3  docs/guide/es/basics.mvc.txt
@@ -28,8 +28,7 @@ resuelve un pedido de usuario:
![Un típico flujo de tareas de una aplicación Yii](flow.png)
1. Un usuario realiza un pedido con la siguiente URL `http://www.example.com/index.php?r=post/show&id=1`
- y el servidor Web resuelve el pedido ejecutado
-and the Web server handles the request by executing el Script de entrada en `index.php`.
+ y el servidor Web se encarga de la solicitud mediante la ejecución del script de arranque en index.php.
2. El script de entrada crea una instancia de [applicación](/doc/guide/basics.application)
y la ejecuta.
3. La aplicación obtiene la información detallada del pedido del usuario del
View
230 docs/guide/he/changes.txt
@@ -1,110 +1,120 @@
-אפשרויות חדשות
-===============
-
-עמוד זה מסכם את האפשרויות החדשות שנוספו למערכת ה Yii בכל גרסא.
-
-גרסא 1.1.1
--------------
-
-* נוספה מחלקה חדשה בשם CActiveForm אשר מפשטת כתיבה של קוד הקשור לטפסים ותומכת באימות הנתונים (ולידציה) בצורה רציפה ועקבית בצד הלקוח צד השרת כאחד.
-
-* שינויים משמעותיים בקוד אשר נוצר דרך כלי ה yiic אשר מאפשר יצירה אוטומטית של קוד דרך שורת הפקודות במערכת. בפרט, השלד של המערכת עכשיו נוצר עם כמה תבניות;
-נוספה תמיכה בחיפוש וסינון לעמוד לוח הבקרה שנוצר על ידי פקודת CRUD (פקודה אשר יוצרת,מריצה,מעדכנת,מוחקת נתונים במסד); שימוש ב CActiveForm כדי להציג טופס.
-
- * [נוספה תמיכה להגדרת פקודות גלובאליות לכלי yiic](/doc/guide/topics.console)
-
-גרסא 1.1.0
--------------
-
-* [נוספה תמיכה בכתיבה של בדיקות (Unit Test) יחידות ופונקציונליות](/doc/guide/test.overview)
-
-* [נוספה תמיכה בסקינים בעת שימוש בוידג'טים](/doc/guide/topics.theming#skin)
-
-* [נוסף מודל בר-הרחבה אשר מאפשר יצירה של טפסים](/doc/guide/form.builder)
-
-* הדרך בה מגדירים ערכים בטוחים במודלים שופרה. ראה
- [הגדרת ערכים בטוחים](/doc/guide/form.model#securing-attribute-assignments).
-
-* שינוי האלגוריתם בשאילתת ה SQL כדי שכל הטבלאות הנוספות בשאילתה (Joins) יצורפו לשאילתה אחת.
-
-* שינוי שם ברירת המחדל של הטבלה ב AR לשמה של מחלקת ה AR. זאת אומרת שכעת כשמגדירים קישור לטבלה (Relation) ולא הוגדר שם ברירת מחדל לקישור השם שלו שבעזרתו
-קוראים לטבלה המקושרת יהיה השם של מחלקת ה AR שלה.
-
-* [נוספה תמיכה לשימוש בקידומת לטבלאות במסד](/doc/guide/database.dao#using-table-prefix).
-
-* נוספו עשרות תוספים חדשים לסט חדש הנקרא [ספריית Zii](http://code.google.com/p/zii/).
-
-* שם המפתח בטבלה הראשית בשאילתת AR הוגדר להיות 't' (שאילתות AR בלבד).
-
-
-גרסא 1.0.11
---------------
-
-* נוספה תמיכה ליצירה ועיבוד של קישורים עם סאב-דומיינים כפרמטרים בניתוב הקישור.
- - [פרמטרים בסאב-דומיינים](/doc/guide/topics.url#parameterizing-hostnames)
-
-גרסא 1.0.10
---------------
-
-* שיפור לשימוש ב CPhpMessageSource אשר מאפשר עכשיו לנהל הודעות (תרגומים) על בסיס מודלים בנוסף לקונטרולרים.
- - [ניהול תרגומים](/doc/guide/topics.i18n#message-translation)
-
-* נוספה תמיכה לצירוף פונקציות אנונימיות למנהלי האירועים (Events Manger Handlers) במערכת.
- - [אירועים ברכיבי מערכת](/doc/guide/basics.component#component-event)
-
-גרסא 1.0.8
--------------
-
-* נוספה תמיכה בקבלת מספר ערכים שמורים במטמון בבת אחת
- - [ניהול מטמון](/doc/guide/caching.data)
-
-* נתיב לתיקיה ברירת מחדל במערכת נוספה בשם 'ext' אשר מכוונת לתיקיה בה שמורים כל תוספות (Extensions) הצד השלישי.
- - [שימוש בתוספים](/doc/guide/extension.use)
-
-
-גרסא 1.0.7
--------------
-
- * נוספה תמיכה להצגת ערמות המידע אשר נקראו על ידי האפליקציה בהודעות המעקב
- - [שמירת מידע אודות השרת ופרמטרים גלובאלים](/doc/guide/topics.logging#logging-context-information)
-
- * נוספה האפשרות של הוספת 'index' לרשומות הפעילות של המסד כדי שיהיה ניתן לאנדקס אובייקטים משוייכים על ידי שימוש בערכים של עמודה מסויימת
- - [אפשרויות שאילתות מקושרות](/doc/guide/database.arr#relational-query-options)
-
-גרסא 1.0.6
--------------
-
- * נוספה תמיכה לשימוש במרחבי שמות במתודות כמו עדכון ומחיקה:
- - [מרחבי שמות](/doc/guide/database.ar#named-scopes)
-
- * נוספה תמיכה במרחבי שמות באפשרות של 'with' בחוקים מקושרים:
- - [שאילתות מקושרות עם מרחבי שמות](/doc/guide/database.arr#relational-query-with-named-scopes)
-
- * נוספה תמיכה בביצוע פרופילינג של שאילתות SQL
- - [פרופילינג לשאילתות SQL](/doc/guide/topics.logging#profiling-sql-executions)
-
- * נוספה תמיכה לשמירת מידע אודות ערכים גלובאלים
- - [שמירת מידע אודות השרת ופרמטרים גלובאלים](/doc/guide/topics.logging#logging-context-information)
-
- * נוספה תמיכה לעריכה של חוק קישור בודד על ידי הגדרת אפשרויות ה 'urlFormat' ו 'caseSensitive':
- - [קישורים ידידותיים](/doc/guide/topics.url#user-friendly-urls)
-
- * נוספה תמיכה להצגת שגיאות מערכת על ידי מתודה בקונטרולר:
- - [טיפול בשגיאות על ידי מתודות](/doc/guide/topics.error#handling-errors-using-an-action)
-
-גרסא 1.0.5
--------------
-
- * נוספה תמיכה במרחבי שמות לרשומות הפעילות. ראה:
- - [מרחיב שמות](/doc/guide/database.ar#named-scopes)
- - [מרחבי שמות ברירת מחדל](/doc/guide/database.ar#default-named-scope)
- - [שאילתת קישור עם מרחבי שמות](/doc/guide/database.arr#relational-query-with-named-scopes)
-
-
- * נוספה תמיכה בטעינה עצלה בשימוש עם אפשריות שאילתות דינאמיות ברשומות הפעילות. ראה:
- - [אפשרויות דינאמיות לשאילתות מקושרות](/doc/guide/database.arr#dynamic-relational-query-options)
-
- * נוספה אפשרות ב [CUrlManager] כדי לתמוך בהוספת פרמטרים לחלקים בנתיב בחוקי הקישורים. ראה:
- - [הוספת פרמטרים לחוקי קישורים](/doc/guide/topics.url#parameterizing-routes)
-
-<div class="revision">$Id: changes.txt 1874 2010-03-09 22:23:19Z qiang.xue $</div>
+אפשרויות חדשות
+===============
+
+עמוד זה מסכם את האפשרויות החדשות שנוספו למערכת ה Yii בכל גרסא.
+
+גרסא 1.1.3
+-------------
+
+* [נוספה תמיכה בהגדרת אפשרויות ברירת המחדל לוידגטים דרך קובץ הגדרות האפליקציה](/doc/guide/topics.theming#customizing-widgets-globally)
+
+גרסא 1.1.2
+-------------
+
+* נוסף כלי ווב ליצירת קוד בשם [Gii](/doc/guide/topics.gii)
+
+גרסא 1.1.1
+-------------
+
+* נוספה מחלקה חדשה בשם CActiveForm אשר מפשטת כתיבה של קוד הקשור לטפסים ותומכת באימות הנתונים (ולידציה) בצורה רציפה ועקבית בצד הלקוח צד השרת כאחד.
+
+* שינויים משמעותיים בקוד אשר נוצר דרך כלי ה yiic אשר מאפשר יצירה אוטומטית של קוד דרך שורת הפקודות במערכת. בפרט, השלד של המערכת עכשיו נוצר עם כמה תבניות;
+נוספה תמיכה בחיפוש וסינון לעמוד לוח הבקרה שנוצר על ידי פקודת CRUD (פקודה אשר יוצרת,מריצה,מעדכנת,מוחקת נתונים במסד); שימוש ב CActiveForm כדי להציג טופס.
+
+ * [נוספה תמיכה להגדרת פקודות גלובאליות לכלי yiic](/doc/guide/topics.console)
+
+גרסא 1.1.0
+-------------
+
+* [נוספה תמיכה בכתיבה של בדיקות (Unit Test) יחידות ופונקציונליות](/doc/guide/test.overview)
+
+* [נוספה תמיכה בסקינים בעת שימוש בוידג'טים](/doc/guide/topics.theming#skin)
+
+* [נוסף מודל בר-הרחבה אשר מאפשר יצירה של טפסים](/doc/guide/form.builder)
+
+* הדרך בה מגדירים ערכים בטוחים במודלים שופרה. ראה
+ [הגדרת ערכים בטוחים](/doc/guide/form.model#securing-attribute-assignments).
+
+* שינוי האלגוריתם בשאילתת ה SQL כדי שכל הטבלאות הנוספות בשאילתה (Joins) יצורפו לשאילתה אחת.
+
+* שינוי שם ברירת המחדל של הטבלה ב AR לשמה של מחלקת ה AR. זאת אומרת שכעת כשמגדירים קישור לטבלה (Relation) ולא הוגדר שם ברירת מחדל לקישור השם שלו שבעזרתו
+קוראים לטבלה המקושרת יהיה השם של מחלקת ה AR שלה.
+
+* [נוספה תמיכה לשימוש בקידומת לטבלאות במסד](/doc/guide/database.dao#using-table-prefix).
+
+* נוספו עשרות תוספים חדשים לסט חדש הנקרא [ספריית Zii](http://code.google.com/p/zii/).
+
+* שם המפתח בטבלה הראשית בשאילתת AR הוגדר להיות 't' (שאילתות AR בלבד).
+
+
+גרסא 1.0.11
+--------------
+
+* נוספה תמיכה ליצירה ועיבוד של קישורים עם סאב-דומיינים כפרמטרים בניתוב הקישור.
+ - [פרמטרים בסאב-דומיינים](/doc/guide/topics.url#parameterizing-hostnames)
+
+גרסא 1.0.10
+--------------
+
+* שיפור לשימוש ב CPhpMessageSource אשר מאפשר עכשיו לנהל הודעות (תרגומים) על בסיס מודלים בנוסף לקונטרולרים.
+ - [ניהול תרגומים](/doc/guide/topics.i18n#message-translation)
+
+* נוספה תמיכה לצירוף פונקציות אנונימיות למנהלי האירועים (Events Manger Handlers) במערכת.
+ - [אירועים ברכיבי מערכת](/doc/guide/basics.component#component-event)
+
+גרסא 1.0.8
+-------------
+
+* נוספה תמיכה בקבלת מספר ערכים שמורים במטמון בבת אחת
+ - [ניהול מטמון](/doc/guide/caching.data)
+
+* נתיב לתיקיה ברירת מחדל במערכת נוספה בשם 'ext' אשר מכוונת לתיקיה בה שמורים כל תוספות (Extensions) הצד השלישי.
+ - [שימוש בתוספים](/doc/guide/extension.use)
+
+
+גרסא 1.0.7
+-------------
+
+ * נוספה תמיכה להצגת ערמות המידע אשר נקראו על ידי האפליקציה בהודעות המעקב
+ - [שמירת מידע אודות השרת ופרמטרים גלובאלים](/doc/guide/topics.logging#logging-context-information)
+
+ * נוספה האפשרות של הוספת 'index' לרשומות הפעילות של המסד כדי שיהיה ניתן לאנדקס אובייקטים משוייכים על ידי שימוש בערכים של עמודה מסויימת
+ - [אפשרויות שאילתות מקושרות](/doc/guide/database.arr#relational-query-options)
+
+גרסא 1.0.6
+-------------
+
+ * נוספה תמיכה לשימוש במרחבי שמות במתודות כמו עדכון ומחיקה:
+ - [מרחבי שמות](/doc/guide/database.ar#named-scopes)
+
+ * נוספה תמיכה במרחבי שמות באפשרות של 'with' בחוקים מקושרים:
+ - [שאילתות מקושרות עם מרחבי שמות](/doc/guide/database.arr#relational-query-with-named-scopes)
+
+ * נוספה תמיכה בביצוע פרופילינג של שאילתות SQL
+ - [פרופילינג לשאילתות SQL](/doc/guide/topics.logging#profiling-sql-executions)
+
+ * נוספה תמיכה לשמירת מידע אודות ערכים גלובאלים
+ - [שמירת מידע אודות השרת ופרמטרים גלובאלים](/doc/guide/topics.logging#logging-context-information)
+
+ * נוספה תמיכה לעריכה של חוק קישור בודד על ידי הגדרת אפשרויות ה 'urlFormat' ו 'caseSensitive':
+ - [קישורים ידידותיים](/doc/guide/topics.url#user-friendly-urls)
+
+ * נוספה תמיכה להצגת שגיאות מערכת על ידי מתודה בקונטרולר:
+ - [טיפול בשגיאות על ידי מתודות](/doc/guide/topics.error#handling-errors-using-an-action)
+
+גרסא 1.0.5
+-------------
+
+ * נוספה תמיכה במרחבי שמות לרשומות הפעילות. ראה:
+ - [מרחיב שמות](/doc/guide/database.ar#named-scopes)
+ - [מרחבי שמות ברירת מחדל](/doc/guide/database.ar#default-named-scope)
+ - [שאילתת קישור עם מרחבי שמות](/doc/guide/database.arr#relational-query-with-named-scopes)
+
+
+ * נוספה תמיכה בטעינה עצלה בשימוש עם אפשריות שאילתות דינאמיות ברשומות הפעילות. ראה:
+ - [אפשרויות דינאמיות לשאילתות מקושרות](/doc/guide/database.arr#dynamic-relational-query-options)
+
+ * נוספה אפשרות ב [CUrlManager] כדי לתמוך בהוספת פרמטרים לחלקים בנתיב בחוקי הקישורים. ראה:
+ - [הוספת פרמטרים לחוקי קישורים](/doc/guide/topics.url#parameterizing-routes)
+
+«div class="revision"»$Id: changes.txt 2172 2010-03-09 22:23:19Z qiang.xue $«/div»
View
33 docs/guide/he/form.overview.txt
@@ -1,16 +1,17 @@
-עבודה עם טפסים
-=================
-
-איסוף מידע מהמשתמש בעזרת טפסי HTML הוא אחד מהמטלות הגדולות בפיתוח אפליקציות ווב. מלבד עיצוב הטפסים, מפתחים צריכים להציג את הטופס עם מידע קיים או
-להגדיר ערכים שיהוו בתור ערכי ברירת המחדל בטופס, לאמת את הקלט של המשתמש, הצגת שגיאות מותאמות לקלט לא תקני, ושמירת הנתונים למאגר נתונים קבוע כלשהו.
-Yii מפשטת את כל התהליך הזה עם הארכיטקטורה שלה.
-
-השלבים הבאים בדרך כלל נחוצים כדי לעבוד עם טפסים במערכת ה Yii:
-
- 1. יצירת מודל המייצג את המידע אשר נאסף מהטופס.
- 2. יצירת קונטרולר עם מתודה אשר מגיבה בעת שליחת הטופס.
- 3. יצירת טופס בסקריפט התצוגה אשר משותף למתודה בקונטרולר.
-
-בחלקים הבאים אנחנו מציגים כל שלב בפרטי פרטים.
-
-<div class="revision">$Id: form.overview.txt 163 2008-11-05 12:51:48Z weizhuo $</div>
+עבודה עם טפסים
+=================
+
+איסוף מידע מהמשתמש בעזרת טפסי HTML הוא אחד מהמטלות הגדולות בפיתוח אפליקציות ווב. מלבד עיצוב הטפסים, מפתחים צריכים להציג את הטופס עם מידע קיים או
+להגדיר ערכים שיהוו בתור ערכי ברירת המחדל בטופס, לאמת את הקלט של המשתמש, הצגת שגיאות מותאמות לקלט לא תקני, ושמירת הנתונים למאגר נתונים קבוע כלשהו.
+Yii מפשטת את כל התהליך הזה עם הארכיטקטורה שלה.
+
+השלבים הבאים בדרך כלל נחוצים כדי לעבוד עם טפסים במערכת ה Yii:
+
+ 1. יצירת מודל המייצג את המידע אשר נאסף מהטופס.
+ 2. יצירת קונטרולר עם מתודה אשר מגיבה בעת שליחת הטופס.
+ 3. יצירת טופס בסקריפט התצוגה אשר משותף למתודה בקונטרולר.
+
+בחלקים הבאים אנחנו מציגים כל שלב בפרטי פרטים.
+
+
+«div class="revision"»$Id: form.overview.txt 163 2008-11-05 12:51:48Z weizhuo $«/div»
View
25 docs/guide/he/index.txt
@@ -1,8 +1,17 @@
-המדריך המלא לפיתוח אפליקציות מתקדמות בעזרת Yii.
-================================================
-
-תורגם על ידי ואדים גבריאל. למידע נוסף ותמיכה בעברית יש להכנס לאתר התמיכה בעברית בכתובת [yiiframework.co.il](http://www.yiiframework.co.il/)
-
-2008-2010 &copy; Yii LLC.
-
-<div class="revision">$Id: index.txt 1679 2010-01-07 21:03:36Z qiang.xue $</div>
+המדריך המלא - Yii
+================================================
+
+
+יש לזכור לקרוא את [תנאי השימוש](http://www.yiiframework.com/doc/terms/) במערכת זו לפני השימוש בה.
+
+מתרגמי המדריך הם
+
+--------------
+
+
+* ואדים גבריאל [בלוג](http://www.vadimg.com) | [תמיכה בעברית](http://he.yiiframework.co.il).
+
+2008-2010 &copy; Yii LLC.
+
+
+«div class="revision"»$Id: index.txt 1679 2010-01-07 21:03:36Z qiang.xue $«/div»
View
56 docs/guide/he/quickstart.installation.txt
@@ -1,28 +1,28 @@
-התקנה
-============
-
-התקנת מערכת ה Yii כוללת את הצעדים הבאים:
-
- 1. הורדת המערכת מהאתר הרשמי [yiiframework.com](http://www.yiiframework.com/).
- 2. חלץ את קבצי המערכת אל תיקיה אשר נתן לגשת אליה דרך הדפדפן
-
-> Tip|טיפ: מערכת ה Yii אינה צריכה להיות תחת תיקיה ציבורים בשרת אשר כל משתמש יכול לגשת אליה.
-אפליקציה הכתובה בעזרת Yii מכילה קובץ הרצה אחד שרק הוא אמור להיות תחת תיקיה ציבורית אשר חשופה לכולם.
-תיקיות וקבצים אחרים הכוללים את התיקיה של Yii צריכים להיות תחת תיקיה שלא ניתן יהיה לגשת אליה ומוגדרת בתור תיקיה פרטים ולא ציבורים, מאחר וזה יכול לגרום
-לבעיות אבטחה.
-
-דרישות
-------------
-
-לאחר התקנת המערכת Yii, תרצה לאמת שהשרת שבו אתה מריץ אותו תומך בכל הדרישות של המערכת.
-תוכל לעשות זאת על ידי כניסה דרך הדפדפן לסקריפט הבדיקה שמגיע עם ההתקנה של המערכת וניתן להגיע אליו בקישור הבא:
-
-~~~
-http://hostname/path/to/yii/requirements/index.php
-~~~
-
-דרישות המינימום של Yii הם שהשרת יתמוך ב PHP 5.1.0 ומעלה. Yii נבדק עם גבי שרת [Apache HTTP
-server](http://httpd.apache.org/) על גבי מערכת ההפעלה מסוג וינדוס ולינוקס.
-כמו כן ניתן להריץ את Yii על גבי שרתים אחרים התומכים בגרסא ההכרחית של PHP 5.
-
-<div class="revision">$Id: quickstart.installation.txt 1622 2009-12-26 20:56:05Z qiang.xue $</div>
+התקנה
+============
+
+התקנת מערכת ה Yii כוללת את הצעדים הבאים:
+
+ 1. הורדת המערכת מהאתר הרשמי [yiiframework.com](http://www.yiiframework.com/).
+ 2. חלץ את קבצי המערכת אל תיקיה אשר נתן לגשת אליה דרך הדפדפן
+
+» Tip|טיפ: מערכת ה Yii אינה צריכה להיות תחת תיקיה ציבורים בשרת אשר כל משתמש יכול לגשת אליה.
+אפליקציה הכתובה בעזרת Yii מכילה קובץ הרצה אחד שרק הוא אמור להיות תחת תיקיה ציבורית אשר חשופה לכולם.
+תיקיות וקבצים אחרים הכוללים את התיקיה של Yii צריכים להיות תחת תיקיה שלא ניתן יהיה לגשת אליה ומוגדרת בתור תיקיה פרטים ולא ציבורים, מאחר וזה יכול לגרום
+לבעיות אבטחה.
+
+דרישות
+------------
+
+לאחר התקנת המערכת Yii, תרצה לאמת שהשרת שבו אתה מריץ אותו תומך בכל הדרישות של המערכת.
+תוכל לעשות זאת על ידי כניסה דרך הדפדפן לסקריפט הבדיקה שמגיע עם ההתקנה של המערכת וניתן להגיע אליו בקישור הבא:
+
+~~~
+http://hostname/path/to/yii/requirements/index.php
+~~~
+
+דרישות המינימום של Yii הם שהשרת יתמוך ב PHP 5.1.0 ומעלה. Yii נבדק עם גבי שרת [Apache HTTP
+server](http://httpd.apache.org/) על גבי מערכת ההפעלה מסוג וינדוס ולינוקס.
+כמו כן ניתן להריץ את Yii על גבי שרתים אחרים התומכים בגרסא ההכרחית של PHP 5.
+
+«div class="revision"»$Id: quickstart.installation.txt 1622 2009-12-26 20:56:05Z qiang.xue $«/div»
View
138 docs/guide/he/toc.txt
@@ -1,68 +1,70 @@
-* התחלה
- - [סקירה](index)
- - [אפשרויות חדשות](changes)
- - [עדכון המערכת מגרסא 1.0 לגרסא 1.1](upgrade)
- - [מה זה Yii](quickstart.what-is-yii)
- - [התקנה](quickstart.installation)
- - [יצירת אפליקציה בפעם הראשונה](quickstart.first-app)
-
-* יסודות המערכת
- - [מודל-תצוגה-קונטרולר (MVC)](basics.mvc)
- - [אתחול המערכת](basics.entry)
- - [אפליקציות](basics.application)
- - [קונטרולר](basics.controller)
- - [מודל](basics.model)
- - [תצוגה](basics.view)
- - [רכיב](basics.component)
- - [מודול](basics.module)
- - [נתיבי קבצים ומרחבי שמות](basics.namespace)
- - [מוסכמות לאופן כתיבת הקוד](basics.convention)
- - [רצף עבודת התכנות](basics.workflow)
-
-* עבודה עם טפסים
- - [סקירה](form.overview)
- - [יצירת מודל](form.model)
- - [יצירת פעולה](form.action)
- - [יצירת טופס](form.view)
- - [איסוף קלט משתמש מרובה](form.table)
-- [שימוש במערכת יצירת הטפסים](form.builder)
-
-* עבודה עם מסדי נתונים
- - [סקירה](database.overview)
- - [אובייקטים גישה למסד הנתונים](database.dao)
- - [רשומות פעילות](database.ar)
- - [קישור רשומות פעילות](database.arr)
-
-* ניהול מטמון
- - [סקירה](caching.overview)
- - [מטמון נתונים](caching.data)
- - [מטמון בחלקים](caching.fragment)
- - [מטמון עמודים](caching.page)
- - [תוכן דינאמי](caching.dynamic)
-
-* הרחבת Yii
- - [סקירה](extension.overview)
- - [שימוש בתוספות](extension.use)
- - [יצירת תוספות](extension.create)
- - [שימוש בספריות צד שלישי](extension.integration)
-
-* הרצת בדיקות
- - [סקירה](test.overview)
- - [הגדרת ערכים קבועים](test.fixture)
- - [בדיקות יחידה](test.unit)
- - [בדיקות פונקציונליות](test.functional)
-
-* נושאים מיוחדים
- - [ניהול קישורים](topics.url)
- - [אימות משתמשים וניהול גישות](topics.auth)
- - [ניהול תבניות ועיצוב](topics.theming)
- - [ניהול רישומים](topics.logging)
- - [ניהול שגיאות](topics.error)
- - [שרותי ווב](topics.webservice)
- - [ אינטרנציונליזציה (I18N)](topics.i18n)
- - [תחבירי תבניות נוספים](topics.prado)
- - [אפלקציות מסוף ובקרה](topics.console)
- - [אבטחה](topics.security)
- - [כון ביצועים](topics.performance)
-
-<div class="revision">$Id: toc.txt 1603 2009-12-18 19:39:18Z qiang.xue $</div>
+* התחלה
+ - [סקירה](index)
+ - [שינויים ואפשרויות חדשות](changes)
+ - [עדכון המערכת מגרסא 1.0 לגרסא 1.1](upgrade)
+ - [מה זה Yii](quickstart.what-is-yii)
+ - [התקנה](quickstart.installation)
+ - [יצירת אפליקציה בפעם הראשונה](quickstart.first-app)
+
+* יסודות המערכת
+ - [מודל-תצוגה-קונטרולר (MVC)](basics.mvc)
+ - [אתחול המערכת](basics.entry)
+ - [אפליקציות](basics.application)
+ - [קונטרולר](basics.controller)
+ - [מודל](basics.model)
+ - [תצוגה](basics.view)
+ - [רכיב](basics.component)
+ - [מודול](basics.module)
+ - [נתיבי קבצים ומרחבי שמות](basics.namespace)
+ - [מוסכמות לאופן כתיבת הקוד](basics.convention)
+ - [רצף עבודת התכנות](basics.workflow)
+
+* עבודה עם טפסים
+ - [סקירה](form.overview)
+ - [יצירת מודל](form.model)
+ - [יצירת פעולה](form.action)
+ - [יצירת טופס](form.view)
+ - [איסוף קלט טבלאי](form.table)
+- [שימוש במערכת יצירת הטפסים](form.builder)
+
+* עבודה עם מסדי נתונים
+ - [סקירה](database.overview)
+ - [שימוש ב DAO](database.dao)
+ - [שימוש ב AR](database.ar)
+ - [שימוש ב ARR](database.arr)
+
+* ניהול מטמון
+ - [סקירה](caching.overview)
+ - [מטמון נתונים](caching.data)
+ - [מטמון בחלקים](caching.fragment)
+ - [מטמון עמודים](caching.page)
+ - [תוכן דינאמי](caching.dynamic)
+
+* הרחבת Yii
+ - [סקירה](extension.overview)
+ - [שימוש בתוספות](extension.use)
+ - [יצירת תוספות](extension.create)
+ - [שימוש בספריות צד שלישי](extension.integration)
+
+* הרצת בדיקות
+ - [סקירה](test.overview)
+ - [נתונים התחלתיים](test.fixture)
+ - [בדיקות יחידה](test.unit)
+ - [בדיקות פונקציונליות](test.functional)
+
+* נושאים מיוחדים
+ - [יצירת קוד אוטומטי](topics.gii)
+ - [ניהול קישורים](topics.url)
+ - [אימות משתמשים וניהול גישות](topics.auth)
+ - [ניהול תבניות ועיצוב](topics.theming)
+ - [תיעוד פעולות](topics.logging)
+ - [ניהול וטיפול בשגיאות](topics.error)
+ - [שרותים חיצוניים](topics.webservice)
+ - [ניהול ותמיכה בשפות](topics.i18n)
+ - [תחביר תצוגה נוסף](topics.prado)
+ - [אפלקציות מסוף ובקרה](topics.console)
+ - [אבטחה](topics.security)
+ - [שיפור ביצועי המערכת](topics.performance)
+ - [יצירת קןד בעזרת כלי שורת הפקודות (לא נתמך)](quickstart.first-app-yiic)
+
+«div class="revision"»$Id: toc.txt 2098 2009-12-18 19:39:18Z qiang.xue $«/div»
View
2  docs/guide/id/topics.url.txt
@@ -68,7 +68,7 @@ pra-deklarasi sebagai [CUrlManager] dalam [CWebApplication].
> Tip: URL yang dihasilkan oleh metode [createUrl|CController::createUrl]
adalah URL relatif. Untuk mendapatkan URL absolut, kita dapat mengawalinya dengan
-`Yii::app()->request->hostInfo`, atau memanggil [createAbsoluteUrl|CController::createAbsoluteUrl].
+`Yii::app()->hostInfo`, atau memanggil [createAbsoluteUrl|CController::createAbsoluteUrl].
URL ramah-pengguna
------------------
View
4 docs/guide/ja/topics.url.txt
@@ -65,7 +65,7 @@ array(
[CurlManager]ですでに宣言済みなので明記する必要が無い点に注意して下さい。
> Tip|ヒント: [createUrl|CController::createUrl]で作成されたURLは相対URLです。
-絶対URLが必要な時は、`Yii::app()->hostInfo`をプリフィックスにするか
+絶対URLが必要な時は、`Yii::app()->request->hostInfo`をプリフィックスにするか
[createAbsoluteUrl|CController::createAbsoluteUrl]をコールします。
ユーザーフレンドリーなURL
@@ -251,4 +251,4 @@ URLに拡張子を付加することができます。例えば、`/post/100`
[urlSuffix|CUrlManager::urlSuffix] プロパティを使用したい拡張子に設定する
だけです。
-<div class="revision">$Id: topics.url.txt 1014 2009-05-10 12:25:55Z qiang.xue $</div>
+<div class="revision">$Id: topics.url.txt 1014 2009-05-10 12:25:55Z qiang.xue $</div>
View
2  docs/guide/pl/basics.component.txt
@@ -186,4 +186,4 @@ jak i metody get (gettery) i set (settery) zachowania. Na przykład, jeśli zach
posiada właściwość o nazwie `xyz` i jest ono powiązane z komponentem `$a`, to możemy
użyć wyrażenia `$a->xyz` w celu otrzymania dostępu do właściwości zachowania.
-<div class="revision">$Id: basics.component.txt 1474 2009-10-18 21:13:52Z qiang.xue $</div>
+<div class="revision">$Id: basics.component.txt 2181 2010-06-14 20:01:23Z qiang.xue $</div>
View
7 docs/guide/pl/changes.txt
@@ -3,6 +3,11 @@ Nowe funkcjonalności
Ta strona zawiera streszczenie najważniejszych nowych funkcji wprowadzonych w każdym wydaniu Yii.
+Wersja 1.1.3
+-------------
+
+ * [Dodano wsparcie umożliwiające konfigurowanie domyslnych wartości widżetu w konfiguracji aplikacji](/doc/guide/topics.theming#customizing-widgets-globally)
+
Wersja 1.1.2
-------------
@@ -120,4 +125,4 @@ Wersja 1.0.5
* Rozszerzono[CUrlManager] o wsparcie dla parametryzacji reguł dla części URL zawierającej trasę. Zobacz:
- [Parametryzacja trasy w regułach URL](/doc/guide/topics.url#parameterizing-routes)
-<div class="revision">$Id: changes.txt 2040 2010-04-11 02:48:52Z qiang.xue $</div>
+<div class="revision">$Id: changes.txt 2217 2010-06-22 23:51:05Z qiang.xue $</div>
View
4 docs/guide/pl/database.arr.txt
@@ -278,6 +278,8 @@ do których się odwołujemy w tej opcji powinny zostać ujednoznacznione.
ogólną wydajność zapytania, gdyż zwracana jest mniejsza ilość powtarzających się danych.
Domyślną wartością jet true. Aby zapoznać się ze szczegółami zobacz sekcję "Wydajność zapyttań relacyjnych".
Opcja ta jest dostępna od wersji 1.0.3.
+
+ - `join`: dodatkowa klauzula `JOIN`. Domyślnie pusta. Opcja ta jest dostępna od wersji 1.1.3.
- `group`: klauzula `GROUP BY`. Domyślnie pusta. Nazwy kolumn
do których się odwołujemy w tej opcji powinny zostać ujednoznacznione.
@@ -563,4 +565,4 @@ class User extends CActiveRecord
w [CActiveRecord::scopes]. W rezultacie, nie mogą one zostać sparametryzowane.
-<div class="revision">$Id: database.arr.txt 2068 2010-04-22 16:42:16Z alexander.makarow $</div>
+<div class="revision">$Id: database.arr.txt 2226 2010-06-25 18:12:01Z qiang.xue $</div>
View
2  docs/guide/pl/form.builder.txt
@@ -469,4 +469,4 @@ gdyż nadal porzebujemy pisać podobną ilość kodu formularza. Mimo to, jest t
korzyści, gdyż formularz jest opisywany za pomocą oddzielnego pliku konfiguracyjnego, co pomaga
programistom lepiej skupić się na logice.
-<div class="revision">$Id: form.builder.txt 1849 2010-03-01 15:54:34Z qiang.xue $</div>
+<div class="revision">$Id: form.builder.txt 2232 2010-06-26 22:42:03Z qiang.xue $</div>
View
4 docs/guide/pl/form.table.txt
@@ -64,8 +64,8 @@ pola wejściowe za pomocą tabeli HTML.
Zauważ, że w powyższym przykładzie użyliśmy `"[$i]name"` zamiast `"name"` jako
drugi parametr podczas wywoływania metody [CHtml::activeTextField].
-Jeśli wystąpił tutaj jakiś błąd sprawdzania danych, odpowiednie pole wejściowe
+Jeśli wystąpił tutaj jakikolwiek błąd sprawdzania danych, odpowiednie pole wejściowe
zostanie podświetlone automatycznie, tak jak to było w przypadku pojedynczego
modelu opisanego wcześniej.
-<div class="revision">$Id: form.table.txt 1622 2009-12-26 20:56:05Z qiang.xue $</div>
+<div class="revision">$Id: form.table.txt 2232 2010-06-26 22:42:03Z qiang.xue $</div>
View
6 docs/guide/pl/quickstart.first-app-yiic.txt
@@ -1,5 +1,5 @@
-Implementowanie operacji CRUD przy użyciu `yiic shell`
-==============================================
+Generacja kodu przy wykorzystaniu narzędzie lini poleceń `yiic shell` (przestarzałe)
+=========================================
> Note|Uwaga: Generatory kody z `yiic shell` jest przestarzałe od wersji 1.1.2. Proszę używaj w zamian potężniejszego i rozszerzalnego, przeglądarkowego generatora kodu dostępnego w [Gii](/doc/guide/topics.gii).
@@ -93,4 +93,4 @@ Wszystkie te funkcjonalności dostarczane są bez potrzeby pisania jakiejkolwiek
![Create new user page](first-app7.png)
-<div class="revision">$Id: quickstart.first-app-yiic.txt 2041 2010-04-11 03:54:25Z qiang.xue $</div>
+<div class="revision">$Id: quickstart.first-app-yiic.txt 2098 2010-05-05 19:49:51Z qiang.xue $</div>
View
2  docs/guide/pl/quickstart.first-app.txt
@@ -248,4 +248,4 @@ pojedynczej linijki kodu!
![Strona tworzenia nowego użytkownika](first-app7.png)
-<div class="revision">$Id: quickstart.first-app.txt 2041 2010-04-11 03:54:25Z qiang.xue $</div>
+<div class="revision">$Id: quickstart.first-app.txt 2125 2010-05-11 23:36:02Z alexander.makarow $</div>
View
3  docs/guide/pl/toc.txt
@@ -65,5 +65,6 @@
- [Aplikacje konsolowe](topics.console)
- [Bezpieczeństwo](topics.security)
- [Zwiększanie wydajności](topics.performance)
+ - [Code Generation using Command Line Tools (deprecated)](quickstart.first-app-yiic)
-<div class="revision">$Id: toc.txt 2040 2010-04-11 02:48:52Z qiang.xue $</div>
+<div class="revision">$Id: toc.txt 2098 2010-05-05 19:49:51Z qiang.xue $</div>
View
97 docs/guide/pl/topics.theming.txt
@@ -110,6 +110,80 @@ używać tego tematu z katalogu `themes/basic/views/layouts`, natomiast indeks s
będzie używał tego z katalogu `themes/basic/views/site`. W przypadku plik widoku nie
zostanie znaleziony w temacie, to wykorzystamy ten znajdujący się w katalogu `protected/views`.
+Globalne dostosowanywanie widżetów do własnych potrzeb
+----------------------------
+
+> Note|Uwaga: funkcjonalność ta dostępna jest od wersji 1.1.3.
+
+W trakcie używania widżetów dostarczonych przez osoby trzecie czy też Yii, często potrzebujemy
+dostosować je do konkretnych potrzeb. Na przykład, możemy chcieć zmienić wartość
+[CLinkPager::maxButtonCount] z 10 (domyślnie) na 5. Możemy zrobić to poprzez przekazanie
+inicjalnych wartości gdy wywołujemy metodę [CBaseController::widget] w celu utworzenia widżetu.
+Jednakże staje się to uciążliwe, jeśli musimy powtarzać tę samą operację dostosowywania
+w każdym miejscu gdzie używany [CLinkPager].
+
+~~~
+[php]
+$this->widget('CLinkPager', array(
+ 'pages'=>$pagination,
+ 'maxButtonCount'=>5,
+ 'cssFile'=>false,
+));
+~~~
+
+Uzywając funkcjonalności globalnego dostosowywania właściwości widżetów, musimy
+okreslić tą wartość inicjalną tylko w jednym miejscu, np. w konfiguracji aplikacji.
+Dzięki temu łatwiej nam zapanować nad dostosowywaniem właściwości widżetów.
+
+Aby używać tę funkcjonalność potrzebujemy skonfigurować
+[widgetFactory|CWebApplication::widgetFactory] w następujące sposób:
+
+~~~
+[php]
+return array(
+ 'components'=>array(
+ 'widgetFactory'=>array(
+ 'widgets'=>array(
+ 'CLinkPager'=>array(
+ 'maxButtonCount'=>5,
+ 'cssFile'=>false,
+ ),
+ 'CJuiDatePicker'=>array(
+ 'language'=>'ru',
+ ),
+ ),
+ ),
+ ),
+);
+~~~
+
+W powyższym kodzie, dostosowaliśmy globalnie właściwości dla dwóch widżetów
+[CLinkPager] oraz [CJuiDatePicker] poprzez skonfigurowanie właściwości [CWidgetFactory::widgets].
+Zauważ, że globalne konfiguracja dla każdego z widżetów reprezetnowana jest
+przez pary klucz-wartość w tablicy, gdzie klucz odpowiada nazwie klasy widżetu
+zaś wartością jest tablica inicjalnych wartości właściwości widżetu.
+
+Od teraz, za każdym razem, gdy tworzymy widżet [CLinkPager] w widoku, powyższe wartości właściwości
+będą przypisywane do widżetu a my musimy jedynie napisać następujący kod w widoku w celu utworzenia widżetu:
+
+~~~
+[php]
+$this->widget('CLinkPager', array(
+ 'pages'=>$pagination,
+));
+~~~
+
+Wciąż możemy nadpisać wartości inicjalne jeśli jest taka potrzeba. Na przykład, jeśli
+w niektórych widokach chcemy ustawić właściwość `maxButtonCount` na 2, możemy zrobić to następująco:
+
+~~~
+[php]
+$this->widget('CLinkPager', array(
+ 'pages'=>$pagination,
+ 'maxButtonCount'=>2,
+));
+~~~
+
Skórki
----
@@ -131,7 +205,19 @@ aplikacji poprzez zainstalowanie komponentu `widgetFactory`:
return array(
'components'=>array(
'widgetFactory'=>array(
- 'class'=>'CWidgetFactory',
+ 'enableSkin'=>true,
+ ),
+ ),
+);
+~~~
+
+Zauważ, że w wersjach wcześniejszych niż 1.1.3, musisz użyć następującej konfiguracji aby móc korzystać w widżetach ze skórek:
+
+~~~
+[php]
+return array(
+ 'components'=>array(
+ 'widgetFactory'=>array(
),
),
);
@@ -198,5 +284,12 @@ tak jak to czyni zazwyczaj, bez zgłaszani błędu.
> Info|Info: Używanie skórek może zmiejszyć wydajność, ponieważ Yii musi znaleźć
plik skórki gdy widżet jest tworzony po raz pierwszy.
+Skórka jest bardzo podobna do funkcjonalności globalnego dostosowywania właściwości.
+Podstawowa różnice są nastepujące:
+
+ - skórka wiąże się raczej z dostosowywaniem wartości właściwości związanych z warstwą prezentacji;
+ - widżet może posiadać wiele skórek;
+ - dla skórek można stosowac motywy (ang. theme);
+ - używanie skórek jest bardziej kosztowne niż używanie funkcjonalności globalnego dostosowywania właściwości widżetu;
-<div class="revision">$Id: topics.theming.txt 1463 2009-10-17 01:49:02Z qiang.xue $</div>
+<div class="revision">$Id: topics.theming.txt 2172 2010-06-07 19:56:01Z qiang.xue $</div>
View
2  docs/guide/pl/topics.url.txt
@@ -306,4 +306,4 @@ do strony statycznej. Aby to zrobić po prostu skonfiguruj komponent
[urlManager|CWebApplication::urlManager] ustawiając jego właściwość
[urlSuffix|CUrlManager::urlSuffix] na taki sufiks, jaki ci odpowiada.
-<div class="revision">$Id: topics.url.txt 1809 2010-02-17 22:08:34Z qiang.xue $</div>
+<div class="revision">$Id: topics.url.txt 2229 2010-06-25 19:57:54Z poppitypop@gmail.com $</div>
View
2  docs/guide/ru/basics.application.txt
@@ -63,7 +63,7 @@ $app=Yii::createWebApplication($configFile);
Содержимое базовой директории должно быть закрыто от доступа из веб.
При использовании веб-сервера [Apache HTTP server](http://httpd.apache.org/),
-это можно сделать путем добавления в базовую директории файла `.htaccess` следующего содержания:
+это можно сделать путем добавления в базовую директорию файла `.htaccess` следующего содержания:
~~~
deny from all
View
42 docs/guide/ru/basics.component.txt
@@ -2,12 +2,12 @@
=========
Yii-приложения состоят из компонентов–объектов, созданных согласно спецификациям.
Компонент (component) — это экземпляр класса [CComponent] или производного от него.
-Использование компонента в основном включает доступ к его свойствам, а также вызов и обработку его событий.
+Использование компонента в основном включает доступ к его свойствам, а также вызов и обработку его событий.
Базовый класс [CComponent] устанавливает то, как определяются свойства и события.
Свойство компонента
-------------------
-Свойство компонента схоже с публичной переменной-членом класса (public member variable).
+Свойство компонента схоже с публичной переменной-членом класса (public member variable).
Мы можем читать или устанавливать его значение. Например:
~~~
@@ -35,28 +35,28 @@ public function setTextWidth($value)
В приведенном коде определено свойство `textWidth` (имя нечувствительно к регистру), доступное для записи.
-При чтении вызывается метод чтения `getTextWidth()`, возвращающий значение свойства.
-Соответственно, при записи будет вызван метод записи `setTextWidth()`.
+При чтении вызывается метод чтения `getTextWidth()`, возвращающий значение свойства.
+Соответственно, при записи будет вызван метод записи `setTextWidth()`.
Если метод записи не определен, свойство будет доступно только для чтения, а
-при попытке записи будет вызвано исключение. Использование методов чтения и
-записи имеет дополнительное преимущество: при чтении или записи значения
-свойства могут быть выполнены дополнительные действия (такие как проверка на корректность,
+при попытке записи будет вызвано исключение. Использование методов чтения и
+записи имеет дополнительное преимущество: при чтении или записи значения
+свойства могут быть выполнены дополнительные действия (такие как проверка на корректность,
вызов события и др.).
>Note|Примечание: Есть небольшая разница в определении свойства через методы и через простое
-объявление переменной. В первом случае имя свойства нечувствительно к регистру,
+объявление переменной. В первом случае имя свойства нечувствительно к регистру,
во втором — чувствительно.
События компонента
------------------
События компонента — это специальные свойства, в качестве значений которых выступают
-методы (называемые обработчиками событий). Прикрепление метода к событию приведет к тому, что метод будет вызван
-автоматически при возникновении события. Поэтому поведение компонента может быть
+методы (называемые обработчиками событий). Прикрепление метода к событию приведет к тому, что метод будет вызван
+автоматически при возникновении события. Поэтому поведение компонента может быть
изменено совершенно отлично от закладываемого при разработке.
-Событие компонента задается путем создания метода с именем, начинающимся на `on`.
-Подобно именам свойств, заданных через методы чтения и записи, имена событий
+Событие компонента задается путем создания метода с именем, начинающимся на `on`.
+Подобно именам свойств, заданных через методы чтения и записи, имена событий
не чувствительны к регистру. Следующий код задает событие `onClicked`:
~~~
@@ -106,10 +106,10 @@ $component->onClicked=function($event) {
Если теперь вызвать `onClicked()`, событие `onClicked` будет вызвано (внутри `onClicked()`), и прикрепленный обработчик
события будет запущен автоматически.
-К событию может быть прикреплено несколько обработчиков.
+К событию может быть прикреплено несколько обработчиков.
При возникновении события обработчики будут вызваны в том порядке,
-в котором они были прикреплены к событию.
-Если в обработчике необходимо предотвратить вызов последующих обработчиков,
+в котором они были прикреплены к событию.
+Если в обработчике необходимо предотвратить вызов последующих обработчиков,
необходимо установить [$event->handled|CEvent::handled] в `true`.
@@ -121,12 +121,12 @@ $component->onClicked=function($event) {
компонентом, к которому прикреплены, посредством объединения функционала вместо четкой специализации (как в случае обычного наследования класса).
К компоненту можно прикрепить несколько поведений и таким образом получить множественное наследование.
-Поведение классов должно реализовывать интерфейс [IBehavior]. Большинство поведений могут быть созданы путем расширения
-базового класса [CBehavior]. В случае, если поведение необходимо прикрепить к [модели](/doc/guide/basics.model), его можно
-создать на основе класса [CModelBehavior] или класса [CActiveRecordBehavior], который реализует дополнительные,
+Поведение классов должно реализовывать интерфейс [IBehavior]. Большинство поведений могут быть созданы путем расширения
+базового класса [CBehavior]. В случае, если поведение необходимо прикрепить к [модели](/doc/guide/basics.model), его можно
+создать на основе класса [CModelBehavior] или класса [CActiveRecordBehavior], который реализует дополнительные,
специфические для модели возможности.
-Чтобы воспользоваться поведением, его необходимо прикрепить к компоненту путем вызова метода поведения
+Чтобы воспользоваться поведением, его необходимо прикрепить к компоненту путем вызова метода поведения
[attach()|IBehavior::attach]. Далее мы вызываем метод поведения через компонент:
~~~
@@ -138,7 +138,7 @@ $component->test();
~~~
К прикрепленному поведению можно обращаться, как к обычному свойству компонента.
-Например, если поведение с именем `tree` прикреплено к компоненту, мы можем получить
+Например, если поведение с именем `tree` прикреплено к компоненту, мы можем получить
ссылку на этот объект поведения следующим образом:
~~~
@@ -174,4 +174,4 @@ $component->test();
Например, поведение имеет свойство с именем `xyz` и привязано к компоненту
`$a`. Тогда мы можем использовать выражение `$a->xyz` для доступа к свойству.
-<div class="revision">$Id: basics.component.txt 1474 2009-10-18 21:13:52Z qiang.xue $</div>
+<div class="revision">$Id: basics.component.txt 2181 2010-06-14 20:01:23Z qiang.xue $</div>
View
36 docs/guide/ru/basics.convention.txt
@@ -2,7 +2,7 @@
==========
Yii ставит соглашения выше конфигураций. Следуя соглашениям, вы сможете создавать серьезные приложения
-без необходимости написания и поддержи сложных конфигураций. Конечно же, при необходимости Yii может
+без необходимости написания и поддержки сложных конфигураций. Конечно же, при необходимости Yii может
быть изменен с помощью конфигураций практически как угодно.
Ниже представлены соглашения, рекомендуемые для программирования под Yii.
@@ -22,7 +22,7 @@ GET-переменная `r` представляет [маршрут](/doc/guid
Если же `ControllerID` также не указан (либо переменная `r` отсутствует), будет использован
контроллер по умолчанию (определенный в свойстве [CWebApplication::defaultController]).
-Используя [CUrlManager] можно создавать и применять более SEO-дружественные адреса URL, такие как
+Используя [CUrlManager] можно создавать и применять более SEO-дружественные адреса URL, такие как
`http://hostname/ControllerID/ActionID.html`. Эта возможность подробно описана в разделе [Красивые адреса URL](/doc/guide/topics.url).
Код
@@ -31,11 +31,11 @@ GET-переменная `r` представляет [маршрут](/doc/guid
Yii рекомендует именовать переменные, функции и классы, используя ГорбатыйРегистр, что подразумевает написание
каждого слова в имени с большой буквы и соединение их без пробелов.
Первое слово в имени переменных и функций должно быть написано в нижнем регистре, чтобы отличать их от имен
-классов (например, `$basePath`, `runController()`, `LinkPager`).
+классов (например, `$basePath`, `runController()`, `LinkPager`).
Для имен приватных членов класса рекомендуется
использовать знак подчеркивания в качестве префикса (например, `$_actionList`).
-Поскольку пространства имен не поддерживаются версиями PHP до 5.3.0, рекомендуется, чтобы имена классов были
+Поскольку пространства имен не поддерживаются версиями PHP до 5.3.0, рекомендуется, чтобы имена классов были
уникальными во избежание конфликта имен с классами сторонних производителей. По этой причине все имена классов
фреймворка имеют префикс "C".
@@ -53,8 +53,8 @@ Yii рекомендует именовать переменные, функци
К примеру, `array('name'=>'My application', 'basePath'=>'./protected')` инициализирует свойства `name` и `basePath`
соответствующими значениями.
-Любые свойства объекта, которые доступны для записи, могут быть сконфигурированы. Если некоторые
-свойства не сконфигурированы, для них будут использованы значения по умолчанию.
+Любые свойства объекта, которые доступны для записи, могут быть сконфигурированы. Если некоторые
+свойства не сконфигурированы, для них будут использованы значения по умолчанию.
При конфигурировании свойств рекомендуется изучить соответствующий раздел документации, чтобы избежать задания некорректных значений.
Файл
@@ -62,14 +62,14 @@ Yii рекомендует именовать переменные, функци
Соглашения для именования и использования файлов зависят от их типов.
Файлы классов должны быть названы так же, как и общие классы, содержащиеся в них.
-Например, класс [CController] находится в файле `CController.php`.
+Например, класс [CController] находится в файле `CController.php`.
Общий класс — это класс, который может быть использован любыми другими классами.
-Каждый файл классов должен содержать максимум один общий класс. Приватные классы
+Каждый файл классов должен содержать максимум один общий класс. Приватные классы
(классы, которые могут быть использованы только одним общим классом) должны находится в одном
файле с общим классом.
-Файлы представлений должны иметь такие же имена, как и содержащиеся в них представления.
-К примеру, представление `index` находится в файле `index.php`.
+Файлы представлений должны иметь такие же имена, как и содержащиеся в них представления.
+К примеру, представление `index` находится в файле `index.php`.
Файл представления — это PHP-скрипт, содержащий HTML и PHP-код, в основном для задач отображения
пользовательского интерфейса.
@@ -82,15 +82,15 @@ Yii рекомендует именовать переменные, функци
В Yii предопределен набор директорий для различных целей. Каждая из них может быть изменена при необходимости.
- - `WebRoot/protected`: это [базовая директория приложения](/doc/guide/basics.application#application-base-directory),
+ - `WebRoot/protected`: это [базовая директория приложения](/doc/guide/basics.application#application-base-directory),
содержащая все наиболее важные с точки зрения безопасности PHP-скрипты и файлы данных. Псевдоним по умолчанию для этого пути — `application`.
-Эта директория и ее содержимое должно быть защищено от прямого доступа из веб. Директория может быть настроена через
+Эта директория и ее содержимое должно быть защищено от прямого доступа из веб. Директория может быть настроена через
[CWebApplication::basePath];
- `WebRoot/protected/runtime`: эта директория содержит приватные временные файлы, сгенерированные во время выполнения приложения.
Эта директория должна быть доступна для записи вебсервером. Она может быть настроена через [CApplication::runtimePath];
- - `WebRoot/protected/extensions`: эта директория содержит все сторонние расширения. Она может быть настроена через
+ - `WebRoot/protected/extensions`: эта директория содержит все сторонние расширения. Она может быть настроена через
[CApplication::extensionPath];
- `WebRoot/protected/modules`: эта директория содержит все [модули](/doc/guide/basics.module) приложения, каждый из которых представлен в отдельной поддиректории. Директория может быть настроена через [CWebApplication::modulePath];
@@ -100,19 +100,19 @@ Yii рекомендует именовать переменные, функци
- `WebRoot/protected/views`: эта директория содержит файлы всех представлений, включая представления контроллеров, макеты и системные
представления. Она может быть настроена через [CWebApplication::viewPath];
- - `WebRoot/protected/views/ControllerID`: эта директория содержит файлы представлений для отдельного класса контроллера.
+ - `WebRoot/protected/views/ControllerID`: эта директория содержит файлы представлений для отдельного класса контроллера.
Здесь `ControllerID` является идентификатором контроллера. Директория может быть настроена через [CController::viewPath];
- - `WebRoot/protected/views/layouts`: эта директория содержит файлы макетов. Она может быть настроена через
+ - `WebRoot/protected/views/layouts`: эта директория содержит файлы макетов. Она может быть настроена через
[CWebApplication::layoutPath];
- - `WebRoot/protected/views/system`: эта директория содержит файлы системных представлений (используются для отображения сообщений об
+ - `WebRoot/protected/views/system`: эта директория содержит файлы системных представлений (используются для отображения сообщений об
ошибках и исключениях). Она может быть настроена через [CWebApplication::systemViewPath];
- - `WebRoot/assets`: эта директория содержит файлы ресурсов (приватные файлы, которые могут быть опубликованы для доступа к ним из веб).
+ - `WebRoot/assets`: эта директория содержит файлы ресурсов (приватные файлы, которые могут быть опубликованы для доступа к ним из веб).
Директория должна быть доступна для записи процессами веб-сервера. Она может быть настроена через [CAssetManager::basePath];
- - `WebRoot/themes`: эта директория содержит различные темы оформления, которые доступны приложению.
+ - `WebRoot/themes`: эта директория содержит различные темы оформления, которые доступны приложению.
Каждая поддиректория содержит отдельную тему с именем, совпадающим с названием поддиректории. Директория может быть настроена через [CThemeManager::basePath].
База данных
View
9 docs/guide/ru/changes.txt
@@ -3,6 +3,11 @@
На этой странице кратко излагаются новые возможности, внесённые в каждом релизе Yii.
+Версия 1.1.3
+-------------
+
+ * [Добавлена возможность настройки виджета через файл конфигурации приложения](/doc/guide/topics.theming#customizing-widgets-globally)
+
Версия 1.1.2
-------------
@@ -76,7 +81,7 @@
* Добавлена поддержка отображения информации стека вызовов в трассирующих сообщениях:
- [Сохранение контекста сообщений](/doc/guide/topics.logging#logging-context-information)
- * В отношениях AR добавлена опция `index`, позволяющая использовать значения
+ * В отношениях AR добавлена опция `index`, позволяющая использовать значения
столбца в качестве ключей массива связанных объектов:
- [Параметры реляционного запроса](/doc/guide/database.arr#relational-query-options)
@@ -116,4 +121,4 @@
* Расширен класс [CUrlManager] поддержкой параметризованных маршрутов в URL-правилах:
- [Параметризация маршрутов](/doc/guide/topics.url#parameterizing-routes)
-<div class="revision">$Id: changes.txt 2040 2010-04-11 02:48:52Z qiang.xue $</div>
+<div class="revision">$Id: changes.txt 2217 2010-06-22 23:51:05Z qiang.xue $</div>
View
95 docs/guide/ru/database.arr.txt
@@ -1,15 +1,15 @@
Реляционная Active Record
=========================
-Мы уже рассмотрели использование Active Record (AR) для выбора данных из одной таблицы базы данных.
-В этом разделе мы расскажем, как использовать AR для объединения нескольких связанных таблиц и получить
+Мы уже рассмотрели использование Active Record (AR) для выбора данных из одной таблицы базы данных.
+В этом разделе мы расскажем, как использовать AR для объединения нескольких связанных таблиц и получить
объединенный набор данных.
Для использования реляционной AR рекомендуется, чтобы все связи отношения
первичный-внешний ключ были четко определены для объединяемых таблиц.
Это помогает поддерживать связность и целостность данных.
-Для наглядности примеров в данном разделе мы будем использовать схему базы данных,
+Для наглядности примеров в данном разделе мы будем использовать схему базы данных,
представленную на этой диаграмме сущность-отношение (ER).
![Диаграмма ER](er.png)
@@ -24,7 +24,7 @@
Перед тем, как использовать AR для реляционных запросов, нам необходимо объяснить AR, как AR-классы связаны друг с другом.
Отношение между двумя AR-классами напрямую зависит от отношений между соответствующими таблицами базы данных. С точки
-зрения БД, отношение между таблицами A и В может быть трех типов: один-ко-многим (например, `tbl_user` и `tbl_post`), один-к-одному
+зрения БД, отношение между таблицами A и В может быть трех типов: один-ко-многим (например, `tbl_user` и `tbl_post`), один-к-одному
(например, `tbl_user` и `tbl_profile`) и многие-ко-многим (например, `tbl_category` и `tbl_post`). В AR существует четыре типа отношений:
- `BELONGS_TO`: если отношение между А и В один-ко-многим, значит В принадлежит А (например, `Post` принадлежит `User`);
@@ -34,11 +34,11 @@
- `HAS_ONE`: это частный случай `HAS_MANY`, где А может иметь максимум одно В (например, у `User` есть только один `Profile`);
- `MANY_MANY`: это отношение соответствует типу отношения многие-ко-многим в БД. Поскольку многие СУБД не поддерживают непосредственно
-тип отношения многие-ко-многим, требуется ассоциированная таблица для преобразования отношения многие-ко-многим в отношения один-ко-многим.
-В нашей схеме базы данных, этой цели служит таблица `tbl_post_category`. В терминологии AR отношение `MANY_MANY` можно описать как
+тип отношения многие-ко-многим, требуется ассоциированная таблица для преобразования отношения многие-ко-многим в отношения один-ко-многим.
+В нашей схеме базы данных, этой цели служит таблица `tbl_post_category`. В терминологии AR отношение `MANY_MANY` можно описать как
комбинацию `BELONGS_TO` и `HAS_MANY`. Например, `Post` принадлежит многим `Category`, а у `Category` есть много `Post`.
-Объявляя отношение в AR, мы переопределяем метод [relations()|CActiveRecord::relations] класса [CActiveRecord]. Этот метод возвращает
+Объявляя отношение в AR, мы переопределяем метод [relations()|CActiveRecord::relations] класса [CActiveRecord]. Этот метод возвращает
массив с конфигурацией отношений. Каждый элемент массива представляет одно отношение в следующем формате:
~~~
@@ -49,7 +49,7 @@
где `VarName` — имя отношения, `RelationType` указывает на один из четырех типов отношения,
`ClassName` — имя AR-класса, связанного с данным AR-классом, а
`ForeignKey` обозначает один или несколько внешних ключей, используемых для связи.
-Кроме того, можно указать ряд дополнительных параметров,
+Кроме того, можно указать ряд дополнительных параметров,
о которых расскажем чуть позже.
В коде ниже показано, как объявить отношение между классами `User` и `Post`.
@@ -82,19 +82,19 @@ class User extends CActiveRecord
}
~~~
-> Info|Информация: Если внешний ключ составной, мы должны объединить имена полей внешнего ключа и отделить
-друг от друга пробелом или запятой. Для типа отношения `MANY_MANY` имя ассоциативной таблицы также должно быть
+> Info|Информация: Если внешний ключ составной, мы должны объединить имена полей внешнего ключа и отделить
+друг от друга пробелом или запятой. Для типа отношения `MANY_MANY` имя ассоциативной таблицы также должно быть
указано во внешнем ключе. Например, отношение `categories` в модели `Post` обозначено внешним ключом `tbl_post_category(post_id, category_id)`.
-При объявлении отношения в AR-классе для каждого отношения в класс неявно добавляется свойство. После выполнения реляционного запроса
-соответствующее свойство будет заполнено связанным(-и) экземпляром(-ами) AR. Например, если `$author` представляет AR-экземпляр `User`, то
+При объявлении отношения в AR-классе для каждого отношения в класс неявно добавляется свойство. После выполнения реляционного запроса
+соответствующее свойство будет заполнено связанным(-и) экземпляром(-ами) AR. Например, если `$author` представляет AR-экземпляр `User`, то
можно использовать `$author->posts` для доступа к связанным экземплярам `Post`.
Выполнение реляционного запроса
---------------------------
Самый простой способ выполнить реляционный запрос — считать реляционное свойство AR-класса. Если ранее к этому свойству никто не обращался,
-то будет инициирован реляционный запрос, который соединит связанные таблицы и оставит только данные, соответствующие первичному ключу текущего
+то будет инициирован реляционный запрос, который соединит связанные таблицы и оставит только данные, соответствующие первичному ключу текущего
экземпляра AR. Результат запроса будет сохранен в свойстве как экземпляр(-ы) связанного класса.
Этот подход также известен, как «отложенная загрузка» (lazy loading), т.е.
реляционный запрос осуществляется только в момент первого обращения к связанным
@@ -108,7 +108,7 @@ $post=Post::model()->findByPk(10);
$author=$post->author;
~~~
-> Info|Информация: Если для отношения не существует связанного экземпляра, то соответствующее
+> Info|Информация: Если для отношения не существует связанного экземпляра, то соответствующее
свойство будет null для отношений `BELONGS_TO` и `HAS_ONE` или пустым массивом
для `HAS_MANY` и `MANY_MANY`.
Стоит отметить, что отношения `HAS_MANY` и `MANY_MANY` возвращают
@@ -117,7 +117,7 @@ $author=$post->author;
Способ отложенной загрузки удобен, но не всегда эффективен. Например, если мы захотим
получить информацию об авторе `N` записей, использование отложенной загрузки
-потребует выполнения `N` запросов для объединения. В данной ситуации,
+потребует выполнения `N` запросов для объединения. В данной ситуации,
нам поможет метод «жадной загрузки» (eager loading).
Этот подход заключается в загрузке всех связанных экземпляров AR одновременно с
@@ -130,8 +130,8 @@ $author=$post->author;
$posts=Post::model()->with('author')->findAll();
~~~
-Код выше вернет массив экземпляров `Post`. В отличие от отложенной загрузки, свойство `author` в каждой записи
-заполнено связанным экземпляром `User` еще до обращения к свойству. Вместо выполнения объединяющего запроса
+Код выше вернет массив экземпляров `Post`. В отличие от отложенной загрузки, свойство `author` в каждой записи
+заполнено связанным экземпляром `User` еще до обращения к свойству. Вместо выполнения объединяющего запроса
для каждой записи, жадная загрузка получает все записи вместе с авторами в одном объединяющем запросе!
В методе [with()|CActiveRecord::with] можно указать множество имен отношений и жадная загрузка вернет их за один раз.
@@ -142,7 +142,7 @@ $posts=Post::model()->with('author')->findAll();
$posts=Post::model()->with('author','categories')->findAll();
~~~
-Кроме того, можно осуществлять вложенную жадную загрузку. Для этого вместо простого списка имен отношений, мы передаем методу
+Кроме того, можно осуществлять вложенную жадную загрузку. Для этого вместо простого списка имен отношений, мы передаем методу
[with()|CActiveRecord::with] имена отношений, упорядоченных иерархически, как в примере ниже:
~~~
@@ -185,19 +185,19 @@ $posts=Post::model()->findAll(array(
Параметры реляционного запроса
------------------------------
-Выше мы упоминали о том, что в реляционном запросе можно указать дополнительные параметры.
+Выше мы упоминали о том, что в реляционном запросе можно указать дополнительные параметры.
Эти параметры — пары имя-значение — используются для тонкой настройки реляционного запроса.
Список параметров представлен ниже.
- `select`: список выбираемых полей для связанного AR-класса. По умолчанию значение параметра равно '*',
-т.е. выбираются все поля таблицы. Для используемых столбцов должны быть разрешены конфликты имён.
+т.е. выбираются все поля таблицы. Для используемых столбцов должны быть разрешены конфликты имён.
- `condition`: соответствует оператору `WHERE`, по умолчанию значение параметра пустое.
Для используемых столбцов должны быть разрешены конфликты имён.