Browse Source

Links shortening and fixes

tags/2.0.7
Bizley 9 years ago
parent
commit
86f8aa0aa1
  1. 2
      docs/guide-pl/caching-page.md
  2. 12
      docs/guide-pl/concept-components.md
  3. 78
      docs/guide-pl/db-active-record.md
  4. 6
      docs/guide-pl/glossary.md
  5. 12
      docs/guide-pl/helper-overview.md
  6. 16
      docs/guide-pl/input-file-upload.md
  7. 48
      docs/guide-pl/input-forms.md
  8. 6
      docs/guide-pl/input-multiple-models.md
  9. 20
      docs/guide-pl/input-tabular-input.md
  10. 17
      docs/guide-pl/input-validation.md
  11. 57
      docs/guide-pl/intro-upgrade-from-v1.md
  12. 13
      docs/guide-pl/output-client-scripts.md
  13. 10
      docs/guide-pl/output-pagination.md
  14. 4
      docs/guide-pl/rest-error-handling.md
  15. 8
      docs/guide-pl/rest-rate-limiting.md
  16. 12
      docs/guide-pl/rest-routing.md
  17. 35
      docs/guide-pl/runtime-overview.md
  18. 57
      docs/guide-pl/start-databases.md
  19. 57
      docs/guide-pl/start-forms.md
  20. 51
      docs/guide-pl/start-gii.md
  21. 43
      docs/guide-pl/start-hello.md
  22. 83
      docs/guide-pl/start-installation.md
  23. 28
      docs/guide-pl/start-looking-ahead.md
  24. 22
      docs/guide-pl/start-workflow.md
  25. 56
      docs/guide-pl/structure-application-components.md
  26. 4
      docs/guide-pl/structure-entry-scripts.md
  27. 2
      docs/guide-pl/structure-overview.md
  28. 2
      docs/guide-pl/test-acceptance.md
  29. 8
      docs/guide-pl/test-environment-setup.md
  30. 2
      docs/guide-pl/test-functional.md
  31. 20
      docs/guide-pl/tutorial-mailing.md
  32. 9
      docs/guide-pl/tutorial-start-from-scratch.md

2
docs/guide-pl/caching-page.md

@ -4,7 +4,7 @@ Pamięć podręczna stron
Pamięć podręczna stron odnosi się do zapisu zawartości całej strony po stronie serwera. Kiedy zostanie ona ponownie wywołana,
zawartość zostanie wyświetlona od razu z pamięci podręcznej zamiast generować ją ponownie od podstaw.
Pamięć podręczna stron jest obsługiwana przez [[yii\filters\PageCache]], [filtr akcji](structure-filters.md).
Pamięć podręczna stron jest obsługiwana przez [filtr akcji](structure-filters.md) [[yii\filters\PageCache|PageCache]].
Poniżej znajdziesz przykładowy sposób użycia w klasie kontrolera:
```php

12
docs/guide-pl/concept-components.md

@ -1,7 +1,7 @@
Komponenty
==========
Komponenty są głównym budulcem aplikacji Yii. Komponenty to instancje klasy [[yii\base\Component]] lub jej potomnych.
Komponenty są głównym budulcem aplikacji Yii. Komponenty to instancje klasy [[yii\base\Component|Component]] lub jej potomnych.
Trzy główne funkcjonalności, które zapewniają komponenty innym klasom to:
* [Właściwości](concept-properties.md)
@ -24,18 +24,18 @@ echo DatePicker::widget([
]);
```
Właściwości widżetu są w łatwy sposób konfigurowalne ponieważ jego klasa rozszerza [[yii\base\Component]].
Właściwości widżetu są w łatwy sposób konfigurowalne ponieważ jego klasa rozszerza [[yii\base\Component|Component]].
Komponenty zapewniają duże możliwości, ale przez to są też bardziej zasobożerne od standardowych obiektów, ponieważ wymagają dodatkowej pamięci i czasu CPU dla wsparcia
[eventów](concept-events.md) i [behaviorów](concept-behaviors.md) w szczególności.
Jeśli komponent nie wymaga tych dwóch funkcjonalności, należy rozważyć rozszerzenie jego klasy z [[yii\base\Object]] zamiast [[yii\base\Component]].
Jeśli komponent nie wymaga tych dwóch funkcjonalności, należy rozważyć rozszerzenie jego klasy z [[yii\base\Object|Object]] zamiast [[yii\base\Component|Component]].
Dzięki temu komponent będzie tak samo wydajny jak standardowy obiekt PHP, ale z dodatkowym wsparciem [właściwości](concept-properties.md).
Rozszerzając klasę [[yii\base\Component]] lub [[yii\base\Object]], zalecane jest aby przestrzegać następującej konwencji:
Rozszerzając klasę [[yii\base\Component|Component]] lub [[yii\base\Object|Object]], zalecane jest aby przestrzegać następującej konwencji:
- Przeciążając konstruktor, dodaj parametr `$config` jako *ostatni* na liście jego argumentów i przekaż go do konstruktora rodzica.
- Zawsze wywoływuj konstruktor rodzica *na końcu* przeciążanego konstruktora.
- Przeciążając metodę [[yii\base\Object::init()]], upewnij się, że wywołujesz metodę `init` rodzica *na początku* własnej implementacji metody `init`.
- Przeciążając metodę [[yii\base\Object::init()|init()]], upewnij się, że wywołujesz metodę `init` rodzica *na początku* własnej implementacji metody `init`.
Przykład:
@ -83,7 +83,7 @@ $component = \Yii::createObject([
> [kontener wstrzykiwania zależności](concept-di-container.md).
Klasa [[yii\base\Object]] wymusza następujący cykl życia obiektu:
Klasa [[yii\base\Object|Object]] wymusza następujący cykl życia obiektu:
1. Preinicjalizacja w konstruktorze. W tym miejscu można ustawić domyślne wartości właściwości.
2. Konfiguracja obiektu poprzez `$config`. Konfiguracja może nadpisać domyślne wartości ustawione w konstruktorze.

78
docs/guide-pl/db-active-record.md

@ -47,7 +47,7 @@ W tej sekcji przewodnika opiszemy sposób użycia Active Record dla baz relacyjn
## Deklarowanie klas Active Record <span id="declaring-ar-classes"></span>
Na początek zadeklaruj klasę typu Active Record rozszerzając [[yii\db\ActiveRecord]]. Ponieważ każda klasa Active Record
Na początek zadeklaruj klasę typu Active Record rozszerzając [[yii\db\ActiveRecord|ActiveRecord]]. Ponieważ każda klasa Active Record
jest powiązana z tabelą bazy danych, należy nadpisać metodę [[yii\db\ActiveRecord::tableName()|tableName()]], aby wskazać
odpowiednią tabelę.
@ -76,7 +76,7 @@ class Customer extends ActiveRecord
Instancje Active Record są traktowane jak [modele](structure-models.md). Z tego powodu zwykle dodajemy klasy Active Record
do przestrzeni nazw `app\models` (lub innej, przeznaczonej dla klas modeli).
Dzięki temu, że [[yii\db\ActiveRecord]] rozszerza [[yii\base\Model]], dziedziczy *wszystkie* funkcjonalności [modelu](structure-models.md),
Dzięki temu, że [[yii\db\ActiveRecord|ActiveRecord]] rozszerza [[yii\base\Model|Model]], dziedziczy *wszystkie* funkcjonalności [modelu](structure-models.md),
takie jak atrybuty, zasady walidacji, serializację danych itd.
@ -120,13 +120,13 @@ class Customer extends ActiveRecord
Po zadeklarowaniu klasy Active Record, możesz użyć jej do pobrania danych z powiązanej tabeli bazy danych.
Proces ten zwykle sprowadza się do następujących trzech kroków:
1. Stworzenie nowego obiektu kwerendy za pomocą metody [[yii\db\ActiveRecord::find()]];
1. Stworzenie nowego obiektu kwerendy za pomocą metody [[yii\db\ActiveRecord::find()|find()]];
2. Zbudowanie obiektu kwerendy za pomocą [metod konstruktora kwerend](db-query-builder.md#building-queries);
3. Wywołanie [metod kwerendy](db-query-builder.md#query-methods) w celu uzyskania danych jako instancji klasy Active Record.
Jak widać, procedura jest bardzo podobna do tej używanej przy [konstruktorze kwerend](db-query-builder.md). Jedyna różnica jest taka, że
zamiast użycia operatora `new` do stworzenia obiektu kwerendy, wywołujemy metodę [[yii\db\ActiveRecord::find()]], która zwraca
nowy obiekt kwerendy klasy [[yii\db\ActiveQuery]].
zamiast użycia operatora `new` do stworzenia obiektu kwerendy, wywołujemy metodę [[yii\db\ActiveRecord::find()|find()]], która zwraca
nowy obiekt kwerendy klasy [[yii\db\ActiveQuery|ActiveQuery]].
Poniżej znajdziesz kilka przykładów pokazujących jak używać Active Query do pobierania danych:
@ -160,15 +160,15 @@ $customers = Customer::find()
W powyższych przykładach `$customer` jest obiektem typu `Customer`, a `$customers` jest tablicą obiektów typu `Customer`. W obu przypadkach
dane pobrane są z tabeli `customer`.
> Info: Dzięki temu, że [[yii\db\ActiveQuery]] rozszerza klasę [[yii\db\Query]], możesz użyć *wszystkich* metod dotyczących kwerend i ich budowania
> Info: Dzięki temu, że [[yii\db\ActiveQuery|ActiveQuery]] rozszerza klasę [[yii\db\Query|Query]], możesz użyć *wszystkich* metod dotyczących kwerend i ich budowania
> opisanych w sekcji [Konstruktor kwerend](db-query-builder.md).
Ponieważ zwykle kwerendy korzystają z zapytań zawierających klucz główny lub też zestaw wartości dla kilku kolumn, Yii udostępnia dwie skrótowe metody,
pozwalające na szybsze ich użycie:
- [[yii\db\ActiveRecord::findOne()]]: zwraca pojedynczą instancję klasy Active Record, zawierającą dane z pierwszego pobranego odpowiadającego zapytaniu
- [[yii\db\ActiveRecord::findOne()|findOne()]]: zwraca pojedynczą instancję klasy Active Record, zawierającą dane z pierwszego pobranego odpowiadającego zapytaniu
wiersza danych.
- [[yii\db\ActiveRecord::findAll()]]: zwraca tablicę instancji klasy Active Record zawierających *wszystkie* wyniki zapytania.
- [[yii\db\ActiveRecord::findAll()|findAll()]]: zwraca tablicę instancji klasy Active Record zawierających *wszystkie* wyniki zapytania.
Obie metody mogą przyjmować jeden z następujących formatów parametrów:
@ -203,12 +203,12 @@ $customers = Customer::findAll([
]);
```
> Note: Ani metoda [[yii\db\ActiveRecord::findOne()]] ani [[yii\db\ActiveQuery::one()]] nie dodaje `LIMIT 1` do wygenerowanej
> Note: Ani metoda [[yii\db\ActiveRecord::findOne()|findOne()]] ani [[yii\db\ActiveQuery::one()|one()]] nie dodaje `LIMIT 1` do wygenerowanej
> kwerendy SQL. Jeśli zapytanie może zwrócić więcej niż jeden wiersz danych, należy wywołać bezpośrednio `limit(1)`, w celu zwiększenia
> wydajności aplikacji, np. `Customer::find()->limit(1)->one()`.
Oprócz korzystania z metod konstruktora kwerend możesz również użyć surowych zapytań SQL w celu pobrania danych do obiektu Active Record za
pomocą metody [[yii\db\ActiveRecord::findBySql()]]:
pomocą metody [[yii\db\ActiveRecord::findBySql()|findBySql()]]:
```php
// zwraca wszystkich nieaktywnych klientów
@ -320,7 +320,7 @@ Używając Active Record możesz w łatwy sposób zapisać dane w bazie, w nast
1. Przygotowanie instancji Active Record
2. Przypisanie nowych wartości do atrybutów Active Record
3. Wywołanie metody [[yii\db\ActiveRecord::save()]] w celu zapisania danych w bazie.
3. Wywołanie metody [[yii\db\ActiveRecord::save()|save()]] w celu zapisania danych w bazie.
Przykład:
@ -361,7 +361,7 @@ public function save($runValidation = true, $attributeNames = null)
### Walidacja danych <span id="data-validation"></span>
Dzięki temu, że [[yii\db\ActiveRecord]] rozszerza klasę [[yii\base\Model]], korzysta z tych samych mechanizmów [walidacji danych](input-validation.md).
Dzięki temu, że [[yii\db\ActiveRecord|ActiveRecord]] rozszerza klasę [[yii\base\Model|Model]], korzysta z tych samych mechanizmów [walidacji danych](input-validation.md).
Możesz definiować zasady walidacji nadpisując metodę [[yii\db\ActiveRecord::rules()|rules()]] i uruchamiać procedurę walidacji wywołując metodę
[[yii\db\ActiveRecord::validate()|validate()]].
@ -406,7 +406,7 @@ $post = Post::findOne(100);
$post->updateCounters(['view_count' => 1]);
```
> Note: Jeśli używasz [[yii\db\ActiveRecord::save()]] do aktualizacji licznika, możesz otrzymać nieprawidłowe rezultaty, ponieważ jest możliwe, że
> Note: Jeśli używasz [[yii\db\ActiveRecord::save()|save()]] do aktualizacji licznika, możesz otrzymać nieprawidłowe rezultaty, ponieważ jest możliwe, że
> ten sam licznik zostanie odczytany i zapisany jednocześnie przez wiele zapytań.
@ -417,8 +417,8 @@ Atrybut uznawany jest za *brudny* jeśli jego wartość została zmodyfikowana o
Pamiętaj, że walidacja danych zostanie przeprowadzona niezależnie od tego, czy instancja Active Record zawiera brudne atrybuty czy też nie.
Active Record automatycznie tworzy listę brudnych atrybutów, poprzez porównanie starej wartości atrybutu do aktualnej. Możesz wywołać metodę
[[yii\db\ActiveRecord::getDirtyAttributes()]], aby otrzymać najnowszą listę brudnych atrybutów. Dodatkowo można wywołać
[[yii\db\ActiveRecord::markAttributeDirty()]], aby oznaczyć konkretny atrybut jako brudny.
[[yii\db\ActiveRecord::getDirtyAttributes()|getDirtyAttributes()]], aby otrzymać najnowszą listę brudnych atrybutów. Dodatkowo można wywołać
[[yii\db\ActiveRecord::markAttributeDirty()|markAttributeDirty()]], aby oznaczyć konkretny atrybut jako brudny.
Jeśli chcesz sprawdzić wartość atrybutu sprzed ostatniej zmiany, możesz wywołać [[yii\db\ActiveRecord::getOldAttributes()|getOldAttributes()]] lub
[[yii\db\ActiveRecord::getOldAttribute()|getOldAttribute()]].
@ -464,14 +464,14 @@ Customer::updateAllCounters(['age' => 1]);
## Usuwanie danych <span id="deleting-data"></span>
Aby usunąć pojedynczy wiersz danych, utwórz najpierw instancję Active Record odpowiadającą temu wierszowi, a następnie wywołaj metodę
[[yii\db\ActiveRecord::delete()]].
[[yii\db\ActiveRecord::delete()|delete()]].
```php
$customer = Customer::findOne(123);
$customer->delete();
```
Możesz również wywołać [[yii\db\ActiveRecord::deleteAll()]], aby usunąć kilka lub wszystkie wiersze danych. Dla przykładu:
Możesz również wywołać [[yii\db\ActiveRecord::deleteAll()|deleteAll()]], aby usunąć kilka lub wszystkie wiersze danych. Dla przykładu:
```php
Customer::deleteAll(['status' => Customer::STATUS_INACTIVE]);
@ -513,11 +513,11 @@ Podczas pobierania danych za pomocą jednej z [metod kwerendy](#querying-data),
Podczas wywołania [[yii\db\ActiveRecord::save()|save()]], w celu dodania lub uaktualnienia danych instancji Active Record, zachodzi następujący cykl:
1. [[yii\db\ActiveRecord::beforeValidate()|beforeValidate()]]: uruchamia event [[yii\db\ActiveRecord::EVENT_BEFORE_VALIDATE|EVENT_BEFORE_VALIDATE]].
Jeśli metoda zwróci false lub właściwość [[yii\base\ModelEvent::isValid]] ma wartość false, kolejne kroki są pomijane.
Jeśli metoda zwróci false lub właściwość [[yii\base\ModelEvent::isValid|isValid]] ma wartość false, kolejne kroki są pomijane.
2. Proces walidacji danych. Jeśli proces zakończy się niepowodzeniem, kolejne kroki po kroku 3. są pomijane.
3. [[yii\db\ActiveRecord::afterValidate()|afterValidate()]]: uruchamia event [[yii\db\ActiveRecord::EVENT_AFTER_VALIDATE|EVENT_AFTER_VALIDATE]].
4. [[yii\db\ActiveRecord::beforeSave()|beforeSave()]]: uruchamia event [[yii\db\ActiveRecord::EVENT_BEFORE_INSERT|EVENT_BEFORE_INSERT]] lub
[[yii\db\ActiveRecord::EVENT_BEFORE_UPDATE|EVENT_BEFORE_UPDATE]]. Jeśli metoda zwróci false lub właściwość [[yii\base\ModelEvent::isValid]] ma
[[yii\db\ActiveRecord::EVENT_BEFORE_UPDATE|EVENT_BEFORE_UPDATE]]. Jeśli metoda zwróci false lub właściwość [[yii\base\ModelEvent::isValid|isValid]] ma
wartość false, kolejne kroki są pomijane.
5. Proces właściwego dodawania lub aktulizowania danych.
6. [[yii\db\ActiveRecord::afterSave()|afterSave()]]: uruchamia event [[yii\db\ActiveRecord::EVENT_AFTER_INSERT|EVENT_AFTER_INSERT]] lub
@ -529,17 +529,17 @@ Podczas wywołania [[yii\db\ActiveRecord::save()|save()]], w celu dodania lub ua
Podczas wywołania [[yii\db\ActiveRecord::delete()|delete()]], w celu usunięcia danych instancji Active Record, zachodzi następujący cykl:
1. [[yii\db\ActiveRecord::beforeDelete()|beforeDelete()]]: uruchamia event [[yii\db\ActiveRecord::EVENT_BEFORE_DELETE|EVENT_BEFORE_DELETE]].
Jeśli metoda zwróci false lub właściwość [[yii\base\ModelEvent::isValid]] ma wartość false, kolejne kroki są pomijane.
Jeśli metoda zwróci false lub właściwość [[yii\base\ModelEvent::isValid|isValid]] ma wartość false, kolejne kroki są pomijane.
2. Proces właściwego usuwania danych.
3. [[yii\db\ActiveRecord::afterDelete()|afterDelete()]]: uruchamia event [[yii\db\ActiveRecord::EVENT_AFTER_DELETE|EVENT_AFTER_DELETE]].
> Note: Wywołanie poniższych metod NIE uruchomi żadnego z powyższych cykli:
>
> - [[yii\db\ActiveRecord::updateAll()]]
> - [[yii\db\ActiveRecord::deleteAll()]]
> - [[yii\db\ActiveRecord::updateCounters()]]
> - [[yii\db\ActiveRecord::updateAllCounters()]]
> - [[yii\db\ActiveRecord::updateAll()|updateAll()]]
> - [[yii\db\ActiveRecord::deleteAll()|deleteAll()]]
> - [[yii\db\ActiveRecord::updateCounters()|updateCounters()]]
> - [[yii\db\ActiveRecord::updateAllCounters()|updateAllCounters()]]
## Praca z transakcjami <span id="transactional-operations"></span>
@ -571,7 +571,7 @@ try {
}
```
Drugi sposób polega na utworzeniu listy operacji bazodanowych, które wymagają transakcji za pomocą metody [[yii\db\ActiveRecord::transactions()]].
Drugi sposób polega na utworzeniu listy operacji bazodanowych, które wymagają transakcji za pomocą metody [[yii\db\ActiveRecord::transactions()|transactions()]].
Dla przykładu:
```php
@ -589,7 +589,7 @@ class Customer extends ActiveRecord
}
```
Metoda [[yii\db\ActiveRecord::transactions()]] powinna zwracać tablicę, której klucze są nazwami [scenariuszy](structure-models.md#scenarios)
Metoda [[yii\db\ActiveRecord::transactions()|transactions()]] powinna zwracać tablicę, której klucze są nazwami [scenariuszy](structure-models.md#scenarios),
a wartości to operacje bazodanowe, które powinny być objęte transakcją. Używaj następujących stałych do określenia typu operacji:
* [[yii\db\ActiveRecord::OP_INSERT|OP_INSERT]]: operacja dodawania wykonywana za pomocą [[yii\db\ActiveRecord::insert()|insert()]];
@ -608,18 +608,18 @@ zmiany, użytkownik B klika przycisk "Zapisz", aby również wykonać identyczn
artykułu, byłoby wskazane powstrzymać go przed nadpisaniem wersji użytkownika A i wyświelić komunikat wyjaśniający sytuację.
Optymistyczne blokowanie rozwiązuje ten problem za pomocą dodatkowej kolumny w bazie przechowującej numer wersji każdego wiersza.
Kiedy taki wiersz jest zapisywany z wcześniejszym numerem wersji niż aktualna rzucany jest wyjątek [[yii\db\StaleObjectException]], który powstrzymuje
Kiedy taki wiersz jest zapisywany z wcześniejszym numerem wersji niż aktualna rzucany jest wyjątek [[yii\db\StaleObjectException|StaleObjectException]], który powstrzymuje
zapis wiersza. Optymistyczne blokowanie może być użyte tylko przy aktualizacji lub usuwaniu istniejącego wiersza za pomocą odpowiednio
[[yii\db\ActiveRecord::update()]] lub [[yii\db\ActiveRecord::delete()]].
[[yii\db\ActiveRecord::update()|update()]] lub [[yii\db\ActiveRecord::delete()|delete()]].
Aby skorzystać z optymistycznej blokady:
1. Stwórz kolumnę w tabeli bazy danych powiązaną z klasą Active Record do przechowywania numeru wersji każdego wiersza.
Kolumna powinna być typu big integer (przykładowo w MySQL `BIGINT DEFAULT 0`).
2. Nadpisz metodę [[yii\db\ActiveRecord::optimisticLock()]], aby zwrócić nazwę tej kolumny.
2. Nadpisz metodę [[yii\db\ActiveRecord::optimisticLock()|optimisticLock()]], aby zwrócić nazwę tej kolumny.
3. W formularzu pobierającym dane od użytkownika, dodaj ukryte pole, gdzie przechowasz aktualny numer wersji uaktualnianego wiersza.
Upewnij się, że atrybut wersji ma dodaną zasadę walidacji i przechodzi poprawnie jej proces.
4. W akcji kontrolera uaktualniającej wiersz za pomocą Active Record, użyj bloku try-catch, aby wyłapać wyjątek [[yii\db\StaleObjectException]].
4. W akcji kontrolera uaktualniającej wiersz za pomocą Active Record, użyj bloku try-catch, aby wyłapać wyjątek [[yii\db\StaleObjectException|StaleObjectException]].
Zaimplemetuj odpowiednią logikę biznesową (np. scalenie zmian, wyświetlenie komunikatu o nieaktualnej wersji, itp.), aby rozwiązać konflikt.
Dla przykładu, załóżmy, że kolumna wersji nazywa się `version`. Implementację optymistycznego blokowania można wykonać za pomocą następującego kodu:
@ -737,7 +737,7 @@ sytuacji, należy najpierw usunąć z pamięci właściwość relacyjną poprzez
> Note: Pomimo podobieństwa mechanizmu relacji do [właściwości obiektu](concept-properties.md), jest tutaj znacząca różnica.
> Wartości właściwości zwykłych obiektów są tego samego typu jak definiująca je metoda-getter.
> Metoda relacyjna zwraca jednak instancję [[yii\db\ActiveQuery]], a właściwości relacji są instancjami [[yii\db\ActiveRecord]] lub tablicą takich obiektów.
> Metoda relacyjna zwraca jednak instancję [[yii\db\ActiveQuery|ActiveQuery]], a właściwości relacji są instancjami [[yii\db\ActiveRecord|ActiveRecord]] lub tablicą takich obiektów.
>
> ```php
> $customer->orders; // tablica obiektów `Order`
@ -749,7 +749,7 @@ sytuacji, należy najpierw usunąć z pamięci właściwość relacyjną poprzez
### Dynamiczne kwerendy relacyjne <span id="dynamic-relational-query"></span>
Dzięki temu, że metoda relacyjna zwraca instancję [[yii\db\ActiveQuery]], możliwe jest dalsze rozbudowanie takiej kwerendy korzystając z
Dzięki temu, że metoda relacyjna zwraca instancję [[yii\db\ActiveQuery|ActiveQuery]], możliwe jest dalsze rozbudowanie takiej kwerendy korzystając z
metod konstruowania kwerend. Dla przykładu:
```php
@ -894,7 +894,7 @@ foreach ($customers as $customer) {
}
```
Wywołanie metody [[yii\db\ActiveQuery::with()]] powoduje pobranie zamówień dla pierwszych 100 klientów w pojedynczej kwerendzie SQL, dzięki czemu
Wywołanie metody [[yii\db\ActiveQuery::with()|with()]] powoduje pobranie zamówień dla pierwszych 100 klientów w pojedynczej kwerendzie SQL, dzięki czemu
redukujemy ilość zapytań ze 101 do 2!
Możliwe jest gorliwe pobranie jednej lub wielu relacji, a nawet gorliwe pobranie *zagnieżdżonych relacji*. Zagnieżdżona relacja to taka, która
@ -946,7 +946,7 @@ $customers = Customer::find()->with([
```
Dostosowując relacyjną kwerendę należy podać nazwę relacji jako klucz tablicy i użyć funkcji anonimowej jako odpowiadającej kluczowi wartości.
Funkcja anonimowa otrzymuje parametr `$query`, reprezentujący obiekt [[yii\db\ActiveQuery]], służący do wykonania relacyjnej kwerendy.
Funkcja anonimowa otrzymuje parametr `$query`, reprezentujący obiekt [[yii\db\ActiveQuery|ActiveQuery]], służący do wykonania relacyjnej kwerendy.
W powyższym przykładzie modyfikujemy relacyjną kwerendę dodając warunek ze statusem zamówienia.
> Note: Wywołując [[yii\db\Query::select()|select()]] podczas gorliwego pobierania relacji, należy upewnić się, że kolumny określone w deklaracji
@ -984,7 +984,7 @@ $customers = Customer::find()
> Note: Podczas tworzenia relacyjnych kwerend zawierających instrukcję SQL JOIN koniecznym jest ujednoznacznienie nazw kolumn.
> Standardową praktyką w takim wypadku jest poprzedzenie nazwy kolumny odpowiadającą jej nazwą tabeli.
Jeszcze lepszym rozwiązaniem jest użycie istniejącej deklaracji relacji wywołując metodę [[yii\db\ActiveQuery::joinWith()]]:
Jeszcze lepszym rozwiązaniem jest użycie istniejącej deklaracji relacji wywołując metodę [[yii\db\ActiveQuery::joinWith()|joinWith()]]:
```php
$customers = Customer::find()
@ -1015,7 +1015,7 @@ $customers = Customer::find()->joinWith([
```
Czasem, przyłączając dwie tabele, musisz sprecyzować dodatkowe warunki dla części `ON` kwerendy JOIN.
Można to zrobić wywołując metodę [[yii\db\ActiveQuery::onCondition()]] w poniższy sposób:
Można to zrobić wywołując metodę [[yii\db\ActiveQuery::onCondition()|onCondition()]] w poniższy sposób:
```php
// SELECT `customer`.* FROM `customer`
@ -1032,7 +1032,7 @@ $customers = Customer::find()->joinWith([
Powyższa kwerenda pobiera *wszystkich* klientów i dla każdego z nich pobiera wszystkie aktywne zamówienia.
Zwróć uwagę na to, że ten przykład różni się od poprzedniego, gdzie pobierani byli tylko klienci posiadający przynajmniej jedno aktywne zamówienie.
> Info: Jeśli [[yii\db\ActiveQuery]] zawiera warunek podany za pomocą [[yii\db\ActiveQuery::onCondition()|onCondition()]],
> Info: Jeśli [[yii\db\ActiveQuery|ActiveQuery]] zawiera warunek podany za pomocą [[yii\db\ActiveQuery::onCondition()|onCondition()]],
> będzie on umieszczony w części instrukcji `ON` tylko jeśli kwerenda zawiera JOIN. W przeciwnym wypadku warunek ten będzie automatycznie
> dodany do części `WHERE`.
@ -1221,8 +1221,8 @@ Możesz używać większości funkcjonalności dostępnych dla relacyjnych kwere
## Niestandardowe klasy kwerend <span id="customizing-query-classes"></span>
Domyślnie wszystkie kwerendy Active Record używają klasy [[yii\db\ActiveQuery]]. Aby użyć niestandardowej klasy kwerend razem z klasą Active Record,
należy nadpisać metodę [[yii\db\ActiveRecord::find()]], aby zwracała instancję żądanej klasy kwerend. Przykład:
Domyślnie wszystkie kwerendy Active Record używają klasy [[yii\db\ActiveQuery|ActiveQuery]]. Aby użyć niestandardowej klasy kwerend razem z klasą Active Record,
należy nadpisać metodę [[yii\db\ActiveRecord::find()|find()]], aby zwracała instancję żądanej klasy kwerend. Przykład:
```php
namespace app\models;

6
docs/guide-pl/glossary.md

@ -54,7 +54,8 @@ Dostawca jest organizacją lub indywidualnym deweloperem dostarczającym kod w f
## instalacja
Instalacja jest procesem przygotowania do działania, zarówno poprzez wykonanie instrukcji zawartych w pliku typu readme, jak i przez uruchomienie specjalnie do tego celu przygotowanego skryptu. W przypadku Yii dotyczy to ustawienia praw dostępu i spełnienia wymogów oprogramowania.
Instalacja jest procesem przygotowania do działania, zarówno poprzez wykonanie instrukcji zawartych w pliku typu readme, jak i przez uruchomienie specjalnie do tego celu
przygotowanego skryptu. W przypadku Yii dotyczy to ustawienia praw dostępu i spełnienia wymogów oprogramowania.
## installation
@ -74,7 +75,8 @@ Konfiguracja może odnosić się zarówno do procesu ustawiania właściwości o
## moduł
Moduł jest mini aplikacją zawierającą elementy MVC, takie jak modele, widoki, kontrolery itp., która może być używana wewnątrz głównej aplikacji, poprzez przekierowanie obsługi żądań do modułu zamiast standardowo do własnego kontrolera.
Moduł jest mini aplikacją zawierającą elementy MVC, takie jak modele, widoki, kontrolery itp., która może być używana wewnątrz głównej aplikacji, poprzez przekierowanie obsługi
żądań do modułu zamiast standardowo do własnego kontrolera.
# N

12
docs/guide-pl/helper-overview.md

@ -16,8 +16,8 @@ echo Html::encode('Test > test');
```
> Note: W celu zapewnienia możliwości [dostosowania klas pomocniczych do własnych potrzeb](#customizing-helper-classes), Yii rozdziela każdą z ich wbudowanych wersji
na dwie klasy: podstawę (np. `BaseArrayHelper`) i klasę właściwą (np. `ArrayHelper`). Kiedy chcesz użyć klasy pomocnicznej, powinieneś korzystać wyłącznie z jej właściwej wersji
i nigdy nie używać bezpośrednio podstawy.
> na dwie klasy: podstawę (np. `BaseArrayHelper`) i klasę właściwą (np. `ArrayHelper`). Kiedy chcesz użyć klasy pomocnicznej, powinieneś korzystać wyłącznie z jej właściwej wersji
> i nigdy nie używać bezpośrednio podstawy.
Wbudowane klasy pomocnicze
@ -43,11 +43,11 @@ Poniższe wbudowane klasy pomocnicze dostępne są w każdym wydaniu Yii:
Dostosowywanie klas pomocniczych do własnych potrzeb <span id="customizing-helper-classes"></span>
----------------------------------------------------
Aby zmodyfikować wbudowaną klasę pomocniczną (np. [[yii\helpers\ArrayHelper]]), należy stworzyć nową klasę rozszerzającą odpowiednią podstawę
(np. [[yii\helpers\BaseArrayHelper]]) i nazwać ją identycznie jak jej wersja właściwa (np. [[yii\helpers\ArrayHelper]]), łącznie z zachowaniem jej przestrzeni nazw.
Ta klasa może następnie zostać użyta do zastąpienia oryginalnej implementacji we frameworku.
Aby zmodyfikować wbudowaną klasę pomocniczną (np. [[yii\helpers\ArrayHelper|ArrayHelper]]), należy stworzyć nową klasę rozszerzającą odpowiednią podstawę
(np. [[yii\helpers\BaseArrayHelper|BaseArrayHelper]]) i nazwać ją identycznie jak jej wersja właściwa (np. [[yii\helpers\ArrayHelper|ArrayHelper]]), łącznie z zachowaniem jej
przestrzeni nazw. Ta klasa może następnie zostać użyta do zastąpienia oryginalnej implementacji we frameworku.
Poniższy przykład ilustruje w jaki sposób zmodyfikować metodę [[yii\helpers\ArrayHelper::merge()|merge()]] klasy [[yii\helpers\ArrayHelper]]:
Poniższy przykład ilustruje w jaki sposób zmodyfikować metodę [[yii\helpers\ArrayHelper::merge()|merge()]] klasy [[yii\helpers\ArrayHelper|ArrayHelper]]:
```php
<?php

16
docs/guide-pl/input-file-upload.md

@ -1,8 +1,8 @@
Wysyłanie plików
===============
Przesyłanie plików w Yii jest zazwyczaj wykonywane przy użyciu klasy [[yii\web\UploadedFile]], która hermetyzuje każdy przesłany plik jako obiekt `UploadedFile`.
W połączeniu z [[yii\widgets\ActiveForm]] oraz [modelem](structure-models.md), możesz w łatwy sposób zaimplementować bezpieczny mechanizm przesyłania plików.
Przesyłanie plików w Yii jest zazwyczaj wykonywane przy użyciu klasy [[yii\web\UploadedFile|UploadedFile]], która hermetyzuje każdy przesłany plik jako obiekt `UploadedFile`.
W połączeniu z [[yii\widgets\ActiveForm|ActiveForm]] oraz [modelem](structure-models.md), możesz w łatwy sposób zaimplementować bezpieczny mechanizm przesyłania plików.
## Tworzenie modeli <span id="creating-models"></span>
@ -43,14 +43,15 @@ class UploadForm extends Model
```
W powyższym kodzie, atrybut `imageFile` zostanie użyty do przechowania instancji przesłanego pliku. Jest połączony z zasadą walidacji `file`, która korzysta z
walidatora [[yii\validators\FileValidator]], aby upewnić się, że przesłany plik posiada rozszerzenie `png` lub `jpg`.
walidatora [[yii\validators\FileValidator|FileValidator]], aby upewnić się, że przesłany plik posiada rozszerzenie `png` lub `jpg`.
Metoda `upload()` wywoła walidację oraz zapis przesłanego pliku na serwerze.
Walidator `file` pozwala na sprawdzenie rozszerzenia, wielkości, typu MIME, itp.
Po więcej szczegółów zajrzyj do sekcji [Podstawowe walidatory](tutorial-core-validators.md#file)
> Tip: Jeśli przesyłasz obrazek, możesz rozważyć użycie walidatora `image`.
Walidator ten jest implementowany przez [[yii\validators\ImageValidator]], który weryfikuje czy atrybut otrzymał prawidłowy obrazek który może być zapisany i przetworzony przez [rozszerzenie Imagine](https://github.com/yiisoft/yii2-imagine).
> Walidator ten jest implementowany przez [[yii\validators\ImageValidator|ImageValidator]], który weryfikuje czy atrybut otrzymał prawidłowy obrazek który może być
> zapisany i przetworzony przez [rozszerzenie Imagine](https://github.com/yiisoft/yii2-imagine).
## Renderowanie pola wyboru pliku <span id="rendering-file-input"></span>
@ -104,12 +105,12 @@ class SiteController extends Controller
}
```
W powyższym kodzie, kiedy formularz jest wysłany, metoda [[yii\web\UploadedFile::getInstance()]] wywoływana jest do reprezentowania pliku jako instancji `UploadedFile`.
W powyższym kodzie, kiedy formularz jest wysłany, metoda [[yii\web\UploadedFile::getInstance()|getInstance()]] wywoływana jest do reprezentowania pliku jako instancji `UploadedFile`.
Następnie przystępujemy do walidacji modelu, aby upewnić się, że przesłany plik jest prawidłowy, po czym zapisujemy go na serwerze.
## Przesyłanie wielu plików <span id="uploading-multiple-files"></span>
Możesz przesyłać wiele plików za jednym razem modyfikując odrobinę kod wylistowany w powyższych sekcjach.
Możesz przesyłać wiele plików za jednym razem, modyfikując odrobinę kod wylistowany w powyższych sekcjach.
Najpierw powinieneś dostosować klasę modelu dodając opcję `maxFiles` do zasady walidacji `file`, aby określić dozwoloną maksymalną liczbę przesyłanych plików.
Metoda `upload()` powinna również zostać zaktualizowana, aby zapisywać pliki jeden po drugim.
@ -164,7 +165,8 @@ use yii\widgets\ActiveForm;
<?php ActiveForm::end() ?>
```
Na koniec, w akcji kontrolera musimy zmienić wywołanie `UploadedFile::getInstance()` na `UploadedFile::getInstances()`, aby przypisać tablicę instancji `UploadedFile` do `UploadForm::imageFiles`.
Na koniec, w akcji kontrolera musimy zmienić wywołanie `UploadedFile::getInstance()` na `UploadedFile::getInstances()`, aby przypisać tablicę instancji `UploadedFile`
do `UploadForm::imageFiles`.
```php
namespace app\controllers;

48
docs/guide-pl/input-forms.md

@ -1,13 +1,14 @@
Tworzenie formularzy
==============
Podstawowym sposobem korzystania z formularzy w Yii jest użycie [[yii\widgets\ActiveForm]]. Ten sposób powinien być używany, jeśli formularz jest bazowany na modelu.
Dodatkowo, [[yii\helpers\Html]] zawiera sporo użytecznych metod, które zazwyczaj używane są do dodawania przycisków i tekstów pomocniczych do każdego formularza.
Podstawowym sposobem korzystania z formularzy w Yii jest użycie [[yii\widgets\ActiveForm|ActiveForm]]. Ten sposób powinien być używany, jeśli formularz jest bazowany na modelu.
Dodatkowo, klasa [[yii\helpers\Html|Html]] zawiera sporo użytecznych metod, które zazwyczaj używane są do dodawania przycisków i tekstów pomocniczych do każdego formularza.
Formularz, który jest wyświetlany po stronie klienta, w większości przypadków, posiada odpowiedni [model](structure-models.md), który jest używany do walidacji danych wejściowych po stronie serwera.
(Sprawdź sekcję [Walidacja danych wejściowych](input-validation.md) aby uzyskać więcej szczegółów).
Formularz, który jest wyświetlany po stronie klienta, w większości przypadków, posiada odpowiedni [model](structure-models.md), który jest używany do walidacji danych wejściowych po
stronie serwera (sprawdź sekcję [Walidacja danych wejściowych](input-validation.md) aby uzyskać więcej szczegółów).
Podczas tworzenia formularza na podstawie modelu, pierwszym krokiem jest zdefiniowanie samego modelu.
Model może być bazowany na klasie [Active Record](db-active-record.md), reprezentując dane z bazy danych, lub może być też bazowany na klasie generycznej Model ([[yii\base\Model]]) aby przechwytywać dowolne dane wejściowe, np. formularz logowania.
Model może być bazowany na klasie [Active Record](db-active-record.md), reprezentując dane z bazy danych, lub może być też bazowany na klasie generycznej [[yii\base\Model|Model]],
aby przechwytywać dowolne dane wejściowe, np. formularz logowania.
W poniższym przykładzie pokażemy, jak model generyczny może być użyty do formularza logowania:
```php
@ -49,14 +50,15 @@ $form = ActiveForm::begin([
<?php ActiveForm::end() ?>
```
W powyższym kodzie, [[yii\widgets\ActiveForm::begin()|ActiveForm::begin()]] nie tylko tworzy instancję formularza, ale zaznacza też jego początek.
Cała zawartość położona pomiędzy [[yii\widgets\ActiveForm::begin()|ActiveForm::begin()]] i [[yii\widgets\ActiveForm::end()|ActiveForm::end()]] zostanie otoczona tagiem HTML'owym `<form>`.
Jak w każdym widżecie, możesz sprecyzować kilka opcji jak widżet powinien być skonfigurowany przez przekazanie tablicy do metody `begin`.
W powyższym kodzie, [[yii\widgets\ActiveForm::begin()|begin()]] nie tylko tworzy instancję formularza, ale zaznacza też jego początek.
Cała zawartość położona pomiędzy [[yii\widgets\ActiveForm::begin()|begin()]] i [[yii\widgets\ActiveForm::end()|end()]] zostanie otoczona tagiem HTML'owym `<form>`.
Jak w przypadku każdego widżetu, możesz określić kilka opcji z jakimi widżet powinien być skonfigurowany przez przekazanie tablicy do metody `begin`.
W tym przypadku dodatkowa klasa CSS i identyfikator ID zostały przekazane do otwierającego tagu `<form>`.
Aby zobaczyć wszystkie dostępne opcje, zajrzyj do dokumentacji API [[yii\widgets\ActiveForm]].
Aby zobaczyć wszystkie dostępne opcje, zajrzyj do dokumentacji API [[yii\widgets\ActiveForm|ActiveForm]].
Do utworzenia formularza, wraz z elementami etykiet oraz wszelkimi walidacjami JavaScript, wywoływana jest metoda [[yii\widgets\ActiveForm::field()|ActiveForm::field()]], która zwraca instancję obiektu [[yii\widgets\ActiveField]].
Kiedy rezultat tej metody jest bezpośrednio wyświetlany, będzie on regularnym polem tekstowym.
Do utworzenia formularza, wraz z elementami etykiet oraz wszelkimi walidacjami JavaScript, wywoływana jest metoda [[yii\widgets\ActiveForm::field()|field()]], która zwraca instancję
obiektu [[yii\widgets\ActiveField|ActiveField]].
Kiedy rezultat tej metody jest bezpośrednio wyświetlany, tworzone jest regularne pole tekstowe.
Aby dostosować pola, możesz używać dodatkowych metod łączonych [[yii\widgets\ActiveField|ActiveField]]:
```php
@ -68,13 +70,14 @@ Aby dostosować pola, możesz używać dodatkowych metod łączonych [[yii\widge
<?= $form->field($model, 'email')->input('email') ?>
```
Powyższy kod utworzy tagi `<label>`, `<input>`, oraz wszystkie inne, według pól formularza zdefiniowanych w [[yii\widgets\ActiveField::$template|template]].
Nazwa pola określana jest automatycznie z modelu [[yii\base\Model::formName()|form name]] i nazwy atrybutu.
Powyższy kod utworzy tagi `<label>`, `<input>` oraz wszystkie inne, według pól formularza zdefiniowanych w [[yii\widgets\ActiveField::$template|template]].
Nazwa pola określana jest automatycznie z modelu [[yii\base\Model::formName()|formName()]] i nazwy atrybutu.
Dla przykładu, nazwą pola dla atrybutu `username` w powyższym przykładzie będzie `LoginForm[username]`.
Ta zasada nazewnictwa spowoduje, że tablica wszystkich atrybutów z formularza logowania będzie dostępna w zmiennej `$_POST['LoginForm']` po stronie serwera.
Określanie atrybutów modelu może być wykonane w bardziej wyrafinowany sposób.
Dla przykładu, kiedy atrybut będzie potrzebował pobierać tablicę wartości, podczas przesyłania wielu plików lub wybrania wielu pozycji, możesz określić go jako tablicę dodając `[]` do nazwy atrybutu:
Dla przykładu, kiedy atrybut będzie potrzebował pobierać tablicę wartości, podczas przesyłania wielu plików lub wybrania wielu pozycji, możesz określić go jako tablicę dodając `[]` do
nazwy atrybutu:
```php
// pozwól na przesłanie wielu plików
@ -85,18 +88,17 @@ echo $form->field($model, 'items[]')->checkboxList(['a' => 'Item A', 'b' => 'Ite
```
Bądź ostrożny podczas nazywania elementów formularza takich jak przyciski wysyłania.
Odnosząc się do [dokumentacji jQuery](https://api.jquery.com/submit/), istnieje kilka zarezerwowanych nazw, które mogą powodować konflikty.
Odnosząc się do [dokumentacji jQuery](https://api.jquery.com/submit), istnieje kilka zarezerwowanych nazw, które mogą powodować konflikty.
> Formularz i jego elementy podrzędne powinny nie używać nazw pól lub nazw identyfikatorów które tworzą konflikt z właściwościami formularza,
> takich jak `submit`, `length` lub `method`. Konflikty nazw mogą powodować mylące błędy.
> Kompletna lista zasad oraz walidator znaczników dla tych problemów znajduje się na stronie [DOMLint](http://kangax.github.io/domlint/).
> Kompletna lista zasad oraz walidator znaczników dla tych problemów znajduje się na stronie [DOMLint](http://kangax.github.io/domlint).
Dodatkowe tagi HTML mogą zostać dodane do formularza używając czystego HTML'a lub używając metody z klasy pomocniczej - [[yii\helpers\Html|Html]],
tak jak było to zrobione w przykładzie wyżej z [[yii\helpers\Html::submitButton()|Html::submitButton()]].
tak jak było to zrobione w przykładzie wyżej z [[yii\helpers\Html::submitButton()|submitButton()]].
> Tip: Jeśli używasz Twitter Bootstrap CSS w Twojej aplikacji, możesz użyć
> [[yii\bootstrap\ActiveForm]] zamiast [[yii\widgets\ActiveForm]].
> Rozszerza on [[yii\widgets\ActiveForm]] i używa specyficzne dla Bootstrap style, podczas generowania pól formularza.
> Tip: Jeśli używasz Twitter Bootstrap CSS w Twojej aplikacji, możesz użyć [[yii\bootstrap\ActiveForm]] zamiast [[yii\widgets\ActiveForm]].
> Rozszerza on [[yii\widgets\ActiveForm|ActiveForm]] i podczas generowania pól formularza używa stylu specyficznego dla Bootstrap.
> Tip: Jeśli chcesz oznaczyć wymagane pola gwiazdką, możesz uzyć poniższego kodu CSS:
@ -111,8 +113,7 @@ tak jak było to zrobione w przykładzie wyżej z [[yii\helpers\Html::submitButt
Tworzenie listy rozwijanej <span id="creating-activeform-dropdownlist"></span>
---------------------
Możemy użyć metody klasy ActiveForm [dropDownList()](http://www.yiiframework.com/doc-2.0/yii-widgets-activefield.html#dropDownList()-detail)
do utworzenia rozwijanej listy:
Możemy użyć metody klasy ActiveForm [yii\widgets\ActiveForm::dropDownList()|dropDownList()] do utworzenia rozwijanej listy:
```php
use app\models\ProductCategory;
@ -133,7 +134,8 @@ Wartość z Twojego modelu będzie automatycznie wybrana po wyświetleniu formul
Dalsza lektura <span id="further-reading"></span>
---------------
Następna sekcja [Walidacja danych wejściowych](input-validation.md) dotyczy walidacji przesłanych przed formularz danych po stronie serwera, przy użyciu ajax oraz walidacji po stronie klienta.
Następna sekcja [Walidacja danych wejściowych](input-validation.md) dotyczy walidacji przesłanych przed formularz danych po stronie serwera, przy użyciu ajax oraz walidacji po stronie
klienta.
Aby przeczytać o bardziej złożonych użyciach formularzy możesz zajrzeć do poniższych sekcji:

6
docs/guide-pl/input-multiple-models.md

@ -2,9 +2,9 @@ Pobieranie danych dla wielu modeli
================================
Kiedy mamy do czynienia z jakimiś skomplikowanymi danymi, jest możliwe, że będziesz musiał użyć wielu różnych modeli aby pobrać te dane od użytkownika.
Dla przykładu: Zakładając, że dane logowania użytkownika zapisane są w tabeli `user`, podczas gdy dane profilu użytkownika są przechowywane w tabeli `profile`,
Dla przykładu - zakładając, że dane logowania użytkownika zapisane są w tabeli `user`, podczas gdy dane profilu użytkownika są przechowywane w tabeli `profile`,
będziesz chciał pobrać dane od użytkownika przez model `User` oraz `Profile`.
Z modelem Yii oraz wsparciem formularzy, możesz rozwiązać ten problem w sposób nie różniący się za bardzo od przetwarzania pojedyńczego modelu.
Z modelem Yii oraz wsparciem formularzy, możesz rozwiązać ten problem w sposób nie różniący się za bardzo od przetwarzania pojedynczego modelu.
W poniższym przykładzie pokażemy jak utworzyć formularz, który pozwoli Ci na zbieranie danych dla obydwu modeli: `User` oraz `Profile`.
@ -51,7 +51,7 @@ class UserController extends Controller
```
W akcji `update`, najpierw ładujemy modele `$user` oraz `$profile`, które zostaną zaktualizowane danymi z bazy danych.
Następnie wywołujemy metodę [[yii\base\Model::load()]] aby wypełnić te dwa modele danymi wprowadzonymi przez użytkownika.
Następnie wywołujemy metodę [[yii\base\Model::load()|load()]] aby wypełnić te dwa modele danymi wprowadzonymi przez użytkownika.
Kolejnie modele zostaną poddane waliacji i, w przypadku prawidłowej walidacji, zapisane.
W przeciwnym razie zostanie wyrenderowany widok `update`, który zawiera następujący kod:

20
docs/guide-pl/input-tabular-input.md

@ -1,9 +1,9 @@
Odczytywanie tablicowych danych wejściowych
========================
Czasami zachodzi potrzeba obsłużenia wielu modeli tego samego rodzaju w jednym formularzu. Dla przykładu: ustawienia, gdzie każde z nich jest przechowywane jako para klucz-wartość,
Czasami zachodzi potrzeba obsłużenia wielu modeli tego samego rodzaju w jednym formularzu. Dla przykładu - ustawienia, gdzie każde z nich jest przechowywane jako para klucz-wartość
i każde z nich jest reprezentowane przez model `Setting` [active record](db-active-record.md).
Dla kontrastru, obsługa wielu modeli różnych rodzajów pokazana jest w sekcji [Pobieranie danych dla wielu modeli](input-multiple-models.md).
Dla kontrastu obsługa wielu modeli różnych rodzajów pokazana jest w sekcji [Pobieranie danych dla wielu modeli](input-multiple-models.md).
Poniższe przykłady pokazują jak zaimplementować tablicowe dane wejściowe w Yii.
@ -16,10 +16,10 @@ Występują trzy różne sytuacje, które należy obsłużyć inaczej:
W porównaniu do formularza z pojedyńczym modelem, wytłumaczonym poprzednio, pracujemy teraz na tablicy modeli.
Tablica przekazywana jest do widoku, aby wyświetlić pola wejściowe dla każdego modelu w stylu tabeli,
użyjemy do tego metod pomocniczych z [[yii\base\Model]], które pozwalają na wczytywanie oraz walidację wielu modeli na raz:
użyjemy do tego metod pomocniczych z [[yii\base\Model|Model]], które pozwalają na wczytywanie oraz walidację wielu modeli na raz:
- [[yii\base\Model::loadMultiple()|Model::loadMultiple()]] wczytuje dane z tablicy POST do tablicy modeli.
- [[yii\base\Model::validateMultiple()|Model::validateMultiple()]] waliduje tablicę modeli.
- [[yii\base\Model::loadMultiple()|loadMultiple()]] wczytuje dane z tablicy POST do tablicy modeli.
- [[yii\base\Model::validateMultiple()|validateMultiple()]] waliduje tablicę modeli.
### Aktualizacja określonej liczby rekordów
@ -56,9 +56,9 @@ class SettingsController extends Controller
```
W powyższym kodzie używamy [[yii\db\ActiveQuery::indexBy()|indexBy()]] podczas pobierania danych z bazy danych aby zasilić tablicę modelami zaindeksowanymi przez główny klucz.
Będzie to później użyte do zidentyfikowania pól formularza. [[yii\base\Model::loadMultiple()|Model::loadMultiple()]] uzupełnia modele danymi formularza przesłanymi metodą POST
a następnie metoda [[yii\base\Model::validateMultiple()|Model::validateMultiple()]] waliduje te modele.
Po walidacji przekazujemy parametr `false` do metody [[yii\db\ActiveRecord::save()|save()]] aby nie uruchamiać walidacji ponownie.
Będzie to później użyte do zidentyfikowania pól formularza. [[yii\base\Model::loadMultiple()|loadMultiple()]] uzupełnia modele danymi formularza przesłanymi metodą POST
a następnie metoda [[yii\base\Model::validateMultiple()|validateMultiple()]] waliduje te modele.
Po walidacji przekazujemy parametr `false` do metody [[yii\db\ActiveRecord::save()|save()]], aby nie uruchamiać walidacji ponownie.
Przejdziemy teraz do formularza w widoku `update`:
@ -77,7 +77,7 @@ ActiveForm::end();
```
Dla każdego z ustawień renderujemy nazwę oraz pole wejściowe z wartością. Bardzo ważne jest dodanie odpowiedniego indeksu do nazwy pola, ponieważ dzięki temu
metoda [[yii\base\Model::loadMultiple()|Model::loadMultiple()]] określa który model powinna uzupełnić przekazanymi wartościami.
metoda [[yii\base\Model::loadMultiple()|loadMultiple()]] określa który model powinna uzupełnić przekazanymi wartościami.
### Dynamiczne tworzenie nowych rekordów
@ -99,7 +99,7 @@ public function actionCreate()
Tworzymy tutaj początkową tablicę `$settings` zawierającą domyślnie jeden model, dlatego zawsze co najmniej jedno pole będzie widoczne w widoku.
Dodatkowo dodajemy więcej modeli dla każdej linii pól wejściowych jakie otrzymaliśmy.
W widoku możemy użyć kodu javascript do dynamicznego dodawania nowych linii pól wejściowych.
W widoku możemy użyć kodu JavaScript do dynamicznego dodawania nowych linii pól wejściowych.
### Aktualizacja, tworzenie oraz usuwanie rekordów na jednej stronie

17
docs/guide-pl/input-validation.md

@ -1,7 +1,7 @@
Walidacja danych wejściowych
================
Jedna z głównych zasad mówi, że nigdy nie powinno ufać się danym otrzymanym od użytkowników oraz zawsze je walidować przez użyciem.
Jedna z głównych zasad mówi, że nigdy nie powinno ufać się danym otrzymanym od użytkowników oraz zawsze walidować je przez użyciem.
Mamy [model](structure-models.md) wypełniony danymi od użytkownika. Możemy go zwalidować przez wywołanie metody [[yii\base\Model::validate()|validate()]].
Metoda zwróci wartość `boolean` wskazującą, czy walidacja się powiodła, czy nie. Jeśli nie, możesz pobrać informacje o błędach za pomocą właściwości [[yii\base\Model::errors|errors]].
@ -206,8 +206,8 @@ Dla przykładu,
```
> Note: Większość walidatorów nie obsługuje pustych pól, jeśli ich właściwość [[yii\base\Validator::skipOnEmpty|skipOnEmpty] przyjmuje domyślnie wartość `true`.
Zostaną one po prostu pominięte podczas walidacji, jeśli ich powiązany atrybut otrzyma wartość uznawaną za pustą.
Wśród [podstawowych walidatorów](tutorial-core-validators.md), tylko walidatory `captcha`, `default`, `filter`, `required` oraz `trim` obsługują puste pola.
> Zostaną one po prostu pominięte podczas walidacji, jeśli ich powiązany atrybut otrzyma wartość uznawaną za pustą.
> Wśród [podstawowych walidatorów](tutorial-core-validators.md), tylko walidatory `captcha`, `default`, `filter`, `required` oraz `trim` obsługują puste pola.
## Walidacja "Ad Hoc" <span id="ad-hoc-validation"></span>
@ -227,7 +227,8 @@ if ($validator->validate($email, $error)) {
}
```
> Note: Nie każdy walidator wspiera tego typu walidację. Dla przykładu, podstawowy walidator [unique](tutorial-core-validators.md#unique) został zaprojektowany do pracy wyłącznie z modelami.
> Note: Nie każdy walidator wspiera tego typu walidację. Dla przykładu, podstawowy walidator [unique](tutorial-core-validators.md#unique) został zaprojektowany do pracy wyłącznie z
> modelami.
Jeśli potrzebujesz przeprowadzić wielokrotne walidacje, możesz użyć [[yii\base\DynamicModel|DynamicModel]], który wspiera deklarację atrybutów oraz zasad walidacji "w locie".
Dla przykładu,
@ -402,8 +403,8 @@ ponieważ pozwala na szybszą walidację błędów, a tym samym zapewnia lepszą
klienta *dodatkowo do* walidacji po stronie serwera.
> Info: Walidacja po stronie klienta nie jest wymagana. Głównym jej celem jest poprawa jakości korzystania z formularzy przez użytkowników.
Podobnie do danych wejściowych pochodzących od użytkowników, nigdy nie powinieneś ufać walidacji po stronie klienta. Z tego powodu,
powinieneś zawsze przeprowadzać walidację po stronie serwera wywołując metodę [[yii\base\Model::validate()|validate()]], tak jak zostało to opisane w poprzednich sekcjach.
> Podobnie do danych wejściowych pochodzących od użytkowników, nigdy nie powinieneś ufać walidacji po stronie klienta. Z tego powodu,
> powinieneś zawsze przeprowadzać walidację po stronie serwera wywołując metodę [[yii\base\Model::validate()|validate()]], tak jak zostało to opisane w poprzednich sekcjach.
### Używanie walidacji po stronie klienta <span id="using-client-side-validation"></span>
@ -631,7 +632,7 @@ $form = ActiveForm::begin([
```
> Note: Jeśli właściwość [[yii\widgets\ActiveForm::enableAjaxValidation|enableAjaxValidation]] zostanie skonfigurowana na poziomie pola formularza i jednocześnie w samym formularzu,
pierwszeństwo będzie miała opcja określona w formularzu.
> pierwszeństwo będzie miała opcja określona w formularzu.
Musisz również przygotować serwer, aby mógł obsłużyć AJAXowe zapytanie o walidację. Możesz to osiągnąć przez następujący skrawek kodu w akcji kontrolera:
@ -646,4 +647,4 @@ if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
Powyższy kod sprawdzi, czy zapytanie zostało wysłane przy użyciu AJAXa. Jeśli tak, w odpowiedzi zwróci wynik walidacji w formacie JSON.
> Info: Możesz również użyć [walidacji kolejkowej](#deferred-validation) do wykonania walidacji AJAX, jednakże walidacja AJAXowa opisana w tej sekcji jest bardziej systematyczna i
wymaga mniej wysiłku przy kodowaniu.
> wymaga mniej wysiłku przy kodowaniu.

57
docs/guide-pl/intro-upgrade-from-v1.md

@ -52,7 +52,7 @@ Dzięki mechanizmowi ładowania klas Yii możesz użyć dowolnej podstawowej kla
Komponent i obiekt
------------------
Yii 2.0 rozdzielił klasę `CComponent` z 1.1 na dwie: [[yii\base\Object]] i [[yii\base\Component]].
Yii 2.0 rozdzielił klasę `CComponent` z 1.1 na dwie: [[yii\base\Object|Object]] i [[yii\base\Component|Component]].
Lekka klasa [[yii\base\Object|Object]] pozwala na zdefiniowanie [właściwości obiektu](concept-properties.md) poprzez gettery i settery.
Klasa [[yii\base\Component|Component]] dziedziczy po [[yii\base\Object|Object]] i dodatkowo wspiera obsługę [zdarzeń](concept-events.md) oraz [zachowań](concept-behaviors.md).
@ -132,7 +132,7 @@ Aliasy ścieżek
Yii 2.0 rozszerza funkcjonalność aliasów ścieżek zarówno na ścieżki plików oraz folderów, jak i adresy URL. Yii 2.0 wymaga teraz też,
aby nazwa aliasu zaczynała się znakiem `@` w celu odróżnienia jej od zwyczajnych ścieżek plików/folderów lub URLi.
Dla przykładu: alias `@yii` odnosi się do folderu instalacji Yii. Aliasy ścieżek są wykorzystywane w większości miejsc w podstawowym
kodzie Yii, choćby [[yii\caching\FileCache::cachePath]] - można tu przekazać zarówno zwykłą ścieżkę, jak i alias.
kodzie Yii, choćby [[yii\caching\FileCache::cachePath|cachePath]] - można tu przekazać zarówno zwykłą ścieżkę, jak i alias.
Alias ścieżki jest mocno powiązany z przestrzenią nazw klasy. Zalecane jest, aby zdefiniować alias dla każdej podstawowej
przestrzeni nazw, dzięki czemu mechanizm automatycznego ładowania klas Yii nie będzie wymagał dodatkowej konfiguracji.
@ -147,7 +147,7 @@ Widoki
------
Najbardziej znaczącą zmianą dotyczącą widoków w Yii 2 jest użycie specjalnej zmiennej `$this`. W widoku nie odnosi się ona już do
aktualnego kontrolera lub widżetu, lecz do obiektu *widoku*, nowej koncepcji przedstawionej w 2.0. Obiekt *widoku* jest klasą typu [[yii\web\View]], która
aktualnego kontrolera lub widżetu, lecz do obiektu *widoku*, nowej koncepcji przedstawionej w 2.0. Obiekt *widoku* jest klasą typu [[yii\web\View|View]], która
reprezentuje część wzorca MVC. Jeśli potrzebujesz odwołać się do kontrolera lub widżetu w widoku, możesz użyć `$this->context`.
Aby zrenderować częściowy widok wewnątrz innego widoku, możesz użyć `$this->render()` zamiast dotychczasowego `$this->renderPartial()`.
@ -158,15 +158,15 @@ echo $this->render('_item', ['item' => $item]);
```
Oprócz wykorzystania PHP jako podstawowego języka szablonów, Yii 2.0 oficjalnie wspiera dwa popularne silniki szablonów: Smarty i Twig (The Prado nie jest już wspierany).
Aby użyć któregokolwiek z tych silników, musisz skonfigurować komponent aplikacji `view` poprzez ustawienie właściwości [[yii\base\View::$renderers|View::$renderers]].
Aby użyć któregokolwiek z tych silników, musisz skonfigurować komponent aplikacji `view` poprzez ustawienie właściwości [[yii\base\View::$renderers|$renderers]].
Po więcej szczegółów przejdź do sekcji [Silniki szablonów](tutorial-template-engines.md).
Modele
------
Yii 2.0 korzysta z [[yii\base\Model]] jako bazowego modelu, podobnie jak `CModel` w 1.1.
Klasa `CFormModel` została całkowicie usunięta, w Yii 2 należy rozszerzyć [[yii\base\Model]], aby stworzyć klasę modelu formularza.
Yii 2.0 korzysta z [[yii\base\Model|Model]] jako bazowego modelu, podobnie jak `CModel` w 1.1.
Klasa `CFormModel` została całkowicie usunięta, w Yii 2 należy rozszerzyć [[yii\base\Model|Model]], aby stworzyć klasę modelu formularza.
Yii 2.0 wprowadza nową metodę [[yii\base\Model::scenarios()|scenarios()]], służącą do deklarowania scenariuszy, jak i do oznaczania, w którym scenariuszu
atrybut będzie wymagał walidacji, może być uznany za bezpieczny lub nie itp. Dla przykładu:
@ -197,8 +197,8 @@ Aby dowiedzieć się więcej o modelach, przejdź do sekcji [Modele](structure-m
Kontrolery
----------
Yii 2.0 używa [[yii\web\Controller]] jako bazowej klasy kontrolera, podobnie do `CController` w Yii 1.1.
[[yii\base\Action]] jest bazową klasą dla akcji.
Yii 2.0 używa [[yii\web\Controller|Controller]] jako bazowej klasy kontrolera, podobnie do `CController` w Yii 1.1.
[[yii\base\Action|Action]] jest bazową klasą dla akcji.
Najbardziej oczywistą implikacją tych zmian jest to, że akcja kontrolera powinna zwracać zawartość, którą chcesz wyświetlić, zamiast wyświetlać ją bezpośrednio:
@ -220,7 +220,7 @@ Przejdź do sekcji [Kontrolery](structure-controllers.md), aby poznać więcej s
Widżety
-------
Yii 2.0 korzysta z [[yii\base\Widget]] jako bazowej klasy widżetów, podobnie jak `CWidget` w Yii 1.1.
Yii 2.0 korzysta z [[yii\base\Widget|Widget]] jako bazowej klasy widżetów, podobnie jak `CWidget` w Yii 1.1.
Dla lepszego wsparcia frameworka w aplikacjach IDE Yii 2.0 wprowadził nową składnię używania widżetów. Używane są teraz metody
[[yii\base\Widget::begin()|begin()]], [[yii\base\Widget::end()|end()]] i [[yii\base\Widget::widget()|widget()]] w następujący sposób:
@ -265,7 +265,7 @@ Aplikacje konsolowe używają teraz kontrolerów tak jak aplikacje webowe. Kontr
Aby uruchomić polecenie konsoli, użyj `yii <route>`, gdzie `<route>` oznacza ścieżkę kontrolera (np. `sitemap/index`).
Dodatkowe anonimowe argumenty są przekazywane jako parametry do odpowiedniej metody akcji kontrolera, natomiast nazwane
argumenty są przetwarzane według deklaracji zawartych w [[yii\console\Controller::options()]].
argumenty są przetwarzane według deklaracji zawartych w [[yii\console\Controller::options()|options()]].
Yii 2.0 wspiera automatyczne generowanie informacji pomocy poprzez bloki komentarzy.
@ -286,7 +286,7 @@ W sekcji [Internacjonalizacja](tutorial-i18n.md) znajdziesz więcej szczegółó
Filtry akcji
------------
Filtry akcji są implementowane od teraz za pomocą zachowań (behavior). Aby zdefiniować nowy filtr, należy rozszerzyć klasę [[yii\base\ActionFilter]].
Filtry akcji są implementowane od teraz za pomocą zachowań (behavior). Aby zdefiniować nowy filtr, należy rozszerzyć klasę [[yii\base\ActionFilter|ActionFilter]].
Użycie filtru odbywa się poprzez dołączenie go do kontrolera jako zachowanie. Dla przykładu: aby użyć filtra [[yii\filters\AccessControl]], dodaj poniższy kod w kontrolerze:
```php
@ -312,8 +312,8 @@ Zasoby (Assets)
Yii 2.0 wprowadza nowy mechanizm tzw. *pakietów zasobów*, który zastąpił koncepcję pakietów skryptowych z Yii 1.1.
Pakiet zasobów jest kolekcją plików zasobów (np. plików JavaScript, CSS, obrazków, itd.) zgromadzoną w folderze.
Każdy pakiet jest reprezentowany przez klasę rozszerzającą [[yii\web\AssetBundle]]. Zarejestrowanie pakietu poprzez
metodę [[yii\web\AssetBundle::register()]] pozwala na udostępnienie go publicznie. W przeciwieństwie do rozwiązania z Yii 1,
Każdy pakiet jest reprezentowany przez klasę rozszerzającą [[yii\web\AssetBundle|AssetBundle]]. Zarejestrowanie pakietu poprzez
metodę [[yii\web\AssetBundle::register()|register()]] pozwala na udostępnienie go publicznie. W przeciwieństwie do rozwiązania z Yii 1,
strona rejestrująca pakiet będzie automatycznie zawierać referencje do plików JavaScript i CSS wymienionych na jego liście.
Sekcja [Zasoby (Assets)](structure-assets.md) zawiera szczegółowe informacje na ten temat.
@ -324,11 +324,11 @@ Klasy pomocnicze
Yii 2.0 zawiera wiele powszechnie używanych statycznych klas pomocniczych (helperów), takich jak:
* [[yii\helpers\Html]]
* [[yii\helpers\ArrayHelper]]
* [[yii\helpers\StringHelper]]
* [[yii\helpers\FileHelper]]
* [[yii\helpers\Json]]
* [[yii\helpers\Html|Html]]
* [[yii\helpers\ArrayHelper|ArrayHelper]]
* [[yii\helpers\StringHelper|StringHelper]]
* [[yii\helpers\FileHelper|FileHelper]]
* [[yii\helpers\Json|Json]]
W sekcji [Klasy pomocnicze](helper-overview.md) znajdziesz więcej informacji na ten temat.
@ -336,7 +336,7 @@ W sekcji [Klasy pomocnicze](helper-overview.md) znajdziesz więcej informacji na
Formularze
----------
Yii 2.0 wprowadza koncepcję *pola* do budowy formularzy, korzystając z klasy [[yii\widgets\ActiveForm]].
Yii 2.0 wprowadza koncepcję *pola* do budowy formularzy, korzystając z klasy [[yii\widgets\ActiveForm|ActiveForm]].
Pole jest kontenerem składającym się z etykiety, pola wprowadzenia danych formularza, informacji o błędzie i/lub tekstu podpowiedzi, reprezentowanym
przez obiekt klasy [[yii\widgets\ActiveField|ActiveField]].
Używając pól, możesz stworzyć formularz w sposób o wiele prostszy i bardziej przejrzysty niż do tej pory:
@ -381,11 +381,10 @@ Po więcej szczegółów udaj się do sekcji [Konstruktor kwerend](db-query-buil
Active Record
-------------
Yii 2.0 wprowadza sporo zmian w mechanizmie [Active Record](db-active-record.md). Dwie najbardziej znaczące to
konstruowanie kwerend i obsługa relacji.
Yii 2.0 wprowadza sporo zmian w mechanizmie [Active Record](db-active-record.md). Dwie najbardziej znaczące to konstruowanie kwerend i obsługa relacji.
Klasa `CDbCriteria` z 1.1 została zastąpiona przez [[yii\db\ActiveQuery]] w Yii 2. Klasa ta rozszerza [[yii\db\Query]], dzięki czemu
dziedziczy wszystkie metody konstruowania kwerend. Aby rozpocząć budowanie kwerendy, wywołaj metodę [[yii\db\ActiveRecord::find()]]:
Klasa `CDbCriteria` z 1.1 została zastąpiona przez [[yii\db\ActiveQuery|ActiveQuery]] w Yii 2. Klasa ta rozszerza [[yii\db\Query|Query]], dzięki czemu
dziedziczy wszystkie metody konstruowania kwerend. Aby rozpocząć budowanie kwerendy, wywołaj metodę [[yii\db\ActiveRecord::find()|find()]]:
```php
// Pobranie wszystkich *aktywnych* klientów i posortowanie po ich ID:
@ -439,7 +438,7 @@ public function init()
```
Nadpisywanie konstruktora klasy ActiveRecord w 1.1 wiązało się z pewnymi problemami, co nie występuje już w wersji 2.0.
Zwróć jednak uwagę na to, że przy dodawaniu parametrów do konstruktora możesz potrzebować nadpisać metodę [[yii\db\ActiveRecord::instantiate()]].
Zwróć jednak uwagę na to, że przy dodawaniu parametrów do konstruktora możesz potrzebować nadpisać metodę [[yii\db\ActiveRecord::instantiate()|instantiate()]].
W nowym rekordzie aktywnym znajdziesz wiele innych zmian i udogodnień. Aby zapoznać się z nimi, przejdź do sekcji [Rekord aktywny](db-active-record.md).
@ -448,7 +447,8 @@ Zachowania Active Record
------------------------
W 2.0 zrezygnowaliśmy z bazowej klasy zachowania `CActiveRecordBehavior`. Jeśli chcesz stworzyć zachowanie dla rekordu aktywnego, musisz
rozszerzyć bezpośrednio klasę `yii\base\Behavior`. Jeśli klasa zachowania ma reagować na zdarzenia, powinna nadpisywać metodę `events()`, jak zaprezentowano poniżej:
rozszerzyć bezpośrednio klasę [[yii\base\Behavior|Behavior]]. Jeśli klasa zachowania ma reagować na zdarzenia, powinna nadpisywać metodę [[yii\base\Behavior::events()|events()]],
jak zaprezentowano poniżej:
```php
namespace app\components;
@ -478,11 +478,12 @@ class MyBehavior extends Behavior
Klasa User i IdentityInterface
------------------------------
Klasa `CWebUser` z 1.1 została zastąpiona przez [[yii\web\User]] i nie ma już klasy `CUserIdentity`.
Zamiast tego należy zaimplementować interfejs [[yii\web\IdentityInterface]], który jest znacznie bardziej wygodny i oczywisty w użyciu.
Klasa `CWebUser` z 1.1 została zastąpiona przez [[yii\web\User|User]] i nie ma już klasy `CUserIdentity`.
Zamiast tego należy zaimplementować interfejs [[yii\web\IdentityInterface|IdentityInterface]], który jest znacznie bardziej wygodny i oczywisty w użyciu.
Szablon zaawansowanego projektu zawiera przykład takiego właśnie użycia.
Po więcej szczegółów zajrzyj do sekcji [Uwierzytelnianie](security-authentication.md), [Autoryzacja](security-authorization.md) i [Szablon zaawansowanego projektu](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/README.md).
Po więcej szczegółów zajrzyj do sekcji [Uwierzytelnianie](security-authentication.md), [Autoryzacja](security-authorization.md)
i [Szablon zaawansowanego projektu](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/README.md).
Zarządzanie adresami URL

13
docs/guide-pl/output-client-scripts.md

@ -6,8 +6,7 @@ Praca ze skryptami
### Rejestrowanie skryptów
Dzięki obiektowi [[yii\web\View|View]] możesz rejestrować skrypty w aplikacji. Przeznaczone są do tego dwie dedykowane metody:
[[yii\web\View::registerJs()|registerJs()]] dla skryptów wbudowanych oraz
[[yii\web\View::registerJsFile()|registerJsFile()]] dla skryptów zewnętrznych.
[[yii\web\View::registerJs()|registerJs()]] dla skryptów wbudowanych oraz [[yii\web\View::registerJsFile()|registerJsFile()]] dla skryptów zewnętrznych.
Skrypty wbudowane są przydatne przy konfiguracji oraz dynamicznym generowaniu kodu.
Możesz dodać je w następujący sposób:
@ -18,11 +17,11 @@ $this->registerJs("var options = " . json_encode($options) . ";", View::POS_END,
Pierwszy argument przekazywany do metody `registerJs` to kod JavaScript, który chcemy umieścić na stronie. Jako drugi argument wskazujemy miejsce,
w którym skrypt ma zostać umieszczony na stronie. Możliwe wartości to:
- [[yii\web\View::POS_HEAD|View::POS_HEAD]] dla sekcji `head`.
- [[yii\web\View::POS_BEGIN|View::POS_BEGIN]] zaraz po otwarciu tagu `<body>`.
- [[yii\web\View::POS_END|View::POS_END]] zaraz przed zamknięciem tagu `</body>`.
- [[yii\web\View::POS_READY|View::POS_READY]] do wywołania kodu z użyciem zdarzenia `ready` na dokumencie. Ta opcja zarejestruje automatycznie [[yii\web\JqueryAsset|jQuery]]
- [[yii\web\View::POS_LOAD|View::POS_LOAD]] do wywołania kodu z użyciem zdarzenia `load` na dokumencie. Ta opcja zarejestruje automatycznie [[yii\web\JqueryAsset|jQuery]]
- [[yii\web\View::POS_HEAD|POS_HEAD]] dla sekcji `head`.
- [[yii\web\View::POS_BEGIN|POS_BEGIN]] zaraz po otwarciu tagu `<body>`.
- [[yii\web\View::POS_END|POS_END]] zaraz przed zamknięciem tagu `</body>`.
- [[yii\web\View::POS_READY|POS_READY]] do wywołania kodu z użyciem zdarzenia `ready` na dokumencie. Ta opcja zarejestruje automatycznie [[yii\web\JqueryAsset|jQuery]]
- [[yii\web\View::POS_LOAD|POS_LOAD]] do wywołania kodu z użyciem zdarzenia `load` na dokumencie. Ta opcja zarejestruje automatycznie [[yii\web\JqueryAsset|jQuery]]
Ostatnim argumentem jest unikalne ID skryptu, które jest używane do zidentyfikowania bloku kodu i zastąpienia go, jeśli taki został już zarejestrowany.
Jeśli ten argument nie zostanie podany, kod JavaScript zostanie użyty jako ID.

10
docs/guide-pl/output-pagination.md

@ -4,14 +4,14 @@ Paginacja
Kiedy danych jest zbyt dużo, aby wyświetlić je w całości na jednej stronie, zwykle stosuje się mechanizm podziału na wiele stron,
z których każda prezentuje tylko część danych na raz. Mechanizm ten nazywamy *paginacją*.
W Yii obiekt [[yii\data\Pagination]] reprezentuje zbiór informacji o schemacie paginacji.
W Yii obiekt [[yii\data\Pagination|Pagination]] reprezentuje zbiór informacji o schemacie paginacji.
* [[yii\data\Pagination::$totalCount|liczba wyników]] określa całkowitą liczbę elementów zestawu danych. Zwykle jest to znacznie większa liczba
niż ilość elementów, które można umieścić na pojedynczej stronie.
* [[yii\data\Pagination::$pageSize|rozmiar strony]] określa jak wiele elementów może znaleźć się na pojedynczej stronie. Domyślna wartość to 20.
* [[yii\data\Pagination::$page|aktualna strona]] wskazuje numer aktualnie wyświetlanej strony (począwszy od zera). Domyślna wartość to 0, wskazująca na pierwszą stronę.
Korzystając z w pełni zdefiniowanego obiektu [[yii\data\Pagination]], można pobrać i wyświetlić dane w partiach. Dla przykładu, przy pobieraniu danych z bazy można
Korzystając z w pełni zdefiniowanego obiektu [[yii\data\Pagination|Pagination]], można pobrać i wyświetlić dane w partiach. Dla przykładu, przy pobieraniu danych z bazy można
użyć wartości `OFFSET` i `LIMIT` w kwerendzie, które będą odpowiadać tym zdefiniowanym przez paginację.
```php
@ -36,7 +36,7 @@ Która strona wyników z artykułami zostanie pobrana w powyższym przykładzie?
Domyślnie paginacja próbuje ustawić [[yii\data\Pagination::$page|aktualną stronę]] na odpowiadającą wartości parametru `page`.
Jeśli ten parametr nie jest przekazany, wartość będzie domyślna, czyli 0.
Aby ułatwić tworzenie elementów UI, które będą odpowiedzialne za korzystanie z mechanizmu paginacji, Yii posiada wbudowany widżet [[yii\widgets\LinkPager]],
Aby ułatwić tworzenie elementów UI, które będą odpowiedzialne za korzystanie z mechanizmu paginacji, Yii posiada wbudowany widżet [[yii\widgets\LinkPager|LinkPager]],
który wyświetla listę przycisków z numerami, po kliknięciu których użytkownik przechodzi do pożądanej strony wyników.
Widżet korzysta z obiektu paginacji, dzięki czemu wie, który numer ma aktualnie wyświetlana strona i jak wiele przycisków stron powinien wyświetlić.
Przykład:
@ -49,7 +49,7 @@ echo LinkPager::widget([
]);
```
Jeśli chcesz samemu stworzyć takie elementy UI, możesz skorzystać z metody [[yii\data\Pagination::createUrl()]], aby uzyskać adresy URL poszczególnych stron.
Jeśli chcesz samemu stworzyć takie elementy UI, możesz skorzystać z metody [[yii\data\Pagination::createUrl()|createUrl()]], aby uzyskać adresy URL poszczególnych stron.
Metoda ta wymaga podania parametru page i zwraca poprawnie sformatowany adres URL zawierający ten parametr. Przykładowo,
```php
@ -65,4 +65,4 @@ echo $pagination->createUrl(101);
```
> Tip: Możesz zmodyfikować nazwę parametru kwerendy `page`, poprzez ustawienie właściwości
[[yii\data\Pagination::pageParam|pageParam]] w czasie tworzenia obiektu paginacji.
> [[yii\data\Pagination::pageParam|pageParam]] w czasie tworzenia obiektu paginacji.

4
docs/guide-pl/rest-error-handling.md

@ -3,8 +3,8 @@ Obsługa błędów
Podczas obsługi żądania RESTfulowego API, w przypadku wystąpienia błędu w zapytaniu użytkownika lub gdy stanie się coś nieprzewidywanego
z serwerem, możesz po prostu rzucić wyjątkiem, aby powiadomić użytkownika, że coś poszło nieprawidłowo.
Jeśli możesz zidentyfikować przyczynę błędu (np. żądany zasób nie istnieje), powinieneś rozważyć
rzucenie wyjątkiem razem z odpowiednim kodem statusu HTTP (np. [[yii\web\NotFoundHttpException|NotFoundHttpException]] odpowiada statusowi o kodzie 404).
Jeśli możesz zidentyfikować przyczynę błędu (np. żądany zasób nie istnieje), powinieneś rozważyć rzucenie wyjątkiem razem z odpowiednim kodem statusu HTTP
(np. [[yii\web\NotFoundHttpException|NotFoundHttpException]] odpowiada statusowi o kodzie 404).
Yii wyśle odpowiedź razem z odpowiadającym jej kodem i treścią statusu HTTP. Yii dołączy również do samej odpowiedzi zserializowaną reprezentację
wyjątku. Przykładowo:

8
docs/guide-pl/rest-rate-limiting.md

@ -5,7 +5,7 @@ W celu zapobiegnięcia nadużyciom, powinno się rozważyć wprowadzenie *limitu
do maksymalnie 100 zapytań do API dla każdego użytkownika w czasie 10 minut. Jeśli użytkownik przekroczy ten limit w zadanym czasie,
należy zwrócić odpowiedź ze statusem 429 (oznaczającym "Zbyt dużo zapytań").
Aby ustalić limit użycia, [[yii\web\User::identityClass|klasa identyfikująca użytkownika]] powinna zaimplementować [[yii\filters\RateLimitInterface]].
Aby ustalić limit użycia, [[yii\web\User::identityClass|klasa identyfikująca użytkownika]] powinna zaimplementować [[yii\filters\RateLimitInterface|RateLimitInterface]].
Interfejs ten wymaga dodania trzech metod:
* `getRateLimit()`: zwraca maksymalną liczbę zapytań i okres czasu (np. `[100, 600]` oznacza maksymalnie 100 zapytań do API w czasie 600 sekund).
@ -16,8 +16,8 @@ Do celów obsługi powyższych metod można wykorzystać dwie dodatkowe kolumny
Po ustaleniu tych wartości, metody `loadAllowance()` i `saveAllowance()` mogą być poprawnie zaimplementowane do odczytu i zapisu tych wartości dla aktualnego
zautoryzowanego użytkownika. Aby zwiększyć wydajność tego mechanizmu, należy rozważyć użycie pamięci podręcznej lub bazy typu NoSQL.
Po zaimplemetowaniu wymaganego interfejsu, Yii automatycznie użyje [[yii\filters\RateLimiter]], skonfigurowanego jako filtr akcji dla [[yii\rest\Controller]],
aby pilnować limitu użycia API. Mechanizm rzuci wyjątek [[yii\web\TooManyRequestsHttpException]], kiedy limit zostanie przekroczony.
Po zaimplemetowaniu wymaganego interfejsu, Yii automatycznie użyje [[yii\filters\RateLimiter|RateLimiter]], skonfigurowanego jako filtr akcji dla [[yii\rest\Controller|Controller]],
aby pilnować limitu użycia API. Mechanizm rzuci wyjątek [[yii\web\TooManyRequestsHttpException|TooManyRequestsHttpException]], kiedy limit zostanie przekroczony.
Po dodaniu limitu, każda odpowiedź będzie domyślnie zawierała następujące nagłówki HTTP, zawierające informacje o aktualnym użyciu limitu:
@ -25,7 +25,7 @@ Po dodaniu limitu, każda odpowiedź będzie domyślnie zawierała następujące
* `X-Rate-Limit-Remaining`, liczba pozostałych dozwolonych zapytań z limitu w aktualnym okresie czasu,
* `X-Rate-Limit-Reset`, liczba sekund, którą należy odczekać, aby uzyskać ponownie maksymalną liczbę zapytań z limitu.
Wysyłanie powyższych nagłówków można wyłączyć konfigurując [[yii\filters\RateLimiter::enableRateLimitHeaders]] w klasie kontrolera REST jak w poniższym przykładzie.
Wysyłanie powyższych nagłówków można wyłączyć konfigurując [[yii\filters\RateLimiter::enableRateLimitHeaders|enableRateLimitHeaders]] w klasie kontrolera REST jak w poniższym przykładzie.
```php
public function behaviors()

12
docs/guide-pl/rest-routing.md

@ -19,7 +19,7 @@ Przykładowo żądanie `POST /users` może oznaczać wywołanie akcji `user/crea
]
```
Porównując to z menadżerem URLi dla aplikacji Web, główną nowością tutaj jest użycie [[yii\rest\UrlRule]] do routingu RESTfulowych zasobów API.
Porównując to z menadżerem URLi dla aplikacji Web, główną nowością tutaj jest użycie [[yii\rest\UrlRule|UrlRule]] do routingu RESTfulowych zasobów API.
Ta specjalna klasa zasad URL stworzy cały zestaw potomnych zasad URL obsługujących routing i tworzenie URLi dla wyznaczonego kontrolera.
Dla przykładu, kod powyżej jest zgrubnym odpowiednikiem następujących zasad:
@ -72,14 +72,14 @@ Dla przykładu, aby dodać obsługę nowej akcji `search` dla punktu końcowego
```
Na pewno zwróciłeś uwagę na to, że ID kontrolera `user` występuje tu w formie mnogiej jako `users` dla URLi punktu końcowego.
Dzieje się tak, ponieważ [[yii\rest\UrlRule]] automatycznie przechodzi na formę mnogą dla ID kontrolerów podczas tworzenia potomnych zasad URL.
Zachowanie to można wyłączyć ustawiając [[yii\rest\UrlRule::pluralize]] na false.
Dzieje się tak, ponieważ [[yii\rest\UrlRule|UrlRule]] automatycznie przechodzi na formę mnogą dla ID kontrolerów podczas tworzenia potomnych zasad URL.
Zachowanie to można wyłączyć ustawiając [[yii\rest\UrlRule::pluralize|pluralize]] na false.
> Info: forma mnoga ID kontrolerów jest tworzona poprzez metodę [[yii\helpers\Inflector::pluralize()]]. Uwzględnia ona specjalne zasady tworzenia form mnogich.
Dla przykładu, od słowa `box` zostanie utworzona liczba mnoga `boxes` a nie `boxs`.
> Info: forma mnoga ID kontrolerów jest tworzona poprzez metodę [[yii\helpers\Inflector::pluralize()|pluralize()]]. Uwzględnia ona specjalne zasady tworzenia form mnogich.
> Dla przykładu, od słowa `box` zostanie utworzona liczba mnoga `boxes` a nie `boxs`.
W przypadku, gdy mechanizm automatycznego tworzenia formy mnogiej nie spełnia Twoich oczekiwań, możesz również skonfigurować właściwość
[[yii\rest\UrlRule::controller]], aby bezpośrednio określić w jaki sposób nazwa użyta w punkcie końcowym URLi ma być zmapowana na ID kontrolera.
[[yii\rest\UrlRule::controller|controller]], aby bezpośrednio określić w jaki sposób nazwa użyta w punkcie końcowym URLi ma być zmapowana na ID kontrolera.
Dla przykładu, poniższy kod mapuje nazwę `u` na ID kontrolera `user`.
```php

35
docs/guide-pl/runtime-overview.md

@ -1,23 +1,20 @@
Przegląd
Przegląd
========
Za każdym razem kiedy aplikacja Yii obsługuje żądanie, przetwarza je w podobny sposób.
1. Użytkownik wykonuje żądanie do [skryptu wejściowego](structure-entry-scripts.md) `web/index.php`.
2. Skrypt wejściowy ładuje [konfigurację](concept-configurations.md) aplikacji i tworzy
[instancję aplikacji](structure-applications.md) aby obsłużyć zapytanie.
3. Aplikacja osiąga żądaną [ścieżkę](runtime-routing.md) za pomocą komponentu
[żądania](runtime-requests.md) aplikacji.
4. Aplikacja tworzy instancję [kontrolera](structure-controllers.md), który obsłuży żądanie.
5. Kontroler tworzy instancję [akcji](structure-controllers.md) i wykonuje filtry dla akcji.
6. Jeżeli jakikolwiek filtr się nie wykona, akcja zostanie anulowana.
7. Jeżeli wszystkie filtry przejdą, akcja zostaje wykonana.
8. Akcja wczytuje model danych, być może z bazy danych.
9. Akcja renderuje widok dostarczając go z modelem danych.
10. Wyrenderowana zawartość jest zwracana do komponentu [odpowiedzi](runtime-responses.md) aplikacji.
11. Komponent odpowiedzi wysyła wyrenderowaną zawartość do przeglądarki użytkownika.
Ten diagram pokazuje jak aplikacja obsługuje żądanie.
Za każdym razem kiedy aplikacja Yii obsługuje żądanie, przetwarza je w podobny sposób.
![Request Lifecycle](images/request-lifecycle.png)
1. Użytkownik wykonuje żądanie do [skryptu wejściowego](structure-entry-scripts.md) `web/index.php`.
2. Skrypt wejściowy ładuje [konfigurację](concept-configurations.md) aplikacji i tworzy [instancję aplikacji](structure-applications.md), aby obsłużyć zapytanie.
3. Aplikacja osiąga żądaną [ścieżkę](runtime-routing.md) za pomocą komponentu [żądania](runtime-requests.md) aplikacji.
4. Aplikacja tworzy instancję [kontrolera](structure-controllers.md), który obsłuży żądanie.
5. Kontroler tworzy instancję [akcji](structure-controllers.md) i przetwarza filtry dla akcji.
6. Jeżeli jakikolwiek filtr się nie wykona, akcja zostanie anulowana.
7. Jeżeli wszystkie filtry przejdą, akcja zostaje wykonana.
8. Akcja wczytuje model danych, być może z bazy danych.
9. Akcja renderuje widok dostarczając go z modelem danych.
10. Wyrenderowana zawartość jest zwracana do komponentu [odpowiedzi](runtime-responses.md) aplikacji.
11. Komponent odpowiedzi wysyła wyrenderowaną zawartość do przeglądarki użytkownika.
W tej sekcji opiszemy szczegóły dotyczące niektórych kroków przetwarzania żądania.
![Cykl życia żądania](../guide/images/request-lifecycle.png)
W tej sekcji opiszemy szczegóły dotyczące niektórych kroków przetwarzania żądania.

57
docs/guide-pl/start-databases.md

@ -2,7 +2,8 @@ Praca z bazami danych
======================
Ta sekcja opisuje jak utworzyć nową stronę, która będzie wyświetlała dane krajów pobrane z tabeli bazy danych o nazwie `country`.
Aby to osiągnąć, musisz skonfigurować swoje połączenie z bazą danych, utworzyć klasę [Active Record](db-active-record.md), zdefiniować [akcję](structure-controllers.md) oraz utworzyć [widok](structure-views.md)
Aby to osiągnąć, musisz skonfigurować swoje połączenie z bazą danych, utworzyć klasę [Active Record](db-active-record.md), zdefiniować [akcję](structure-controllers.md) oraz utworzyć
[widok](structure-views.md).
W tej sekcji nauczysz się:
@ -18,7 +19,7 @@ W szczególności powinieneś wiedzieć, jak utworzyć bazę dancyh oraz jak wyw
Przygotowanie bazy danych <span id="preparing-database"></span>
----------------------
Aby rozpocząć musisz utworzyć bazę danych o nazwie `yii2basic`, z której będziesz pobierał dane do swojej aplikacji.
Aby rozpocząć, musisz utworzyć bazę danych o nazwie `yii2basic`, z której będziesz pobierał dane do swojej aplikacji.
Możesz utworzyć bazę SQLite, MySQL, PostgreSQL, MSSQL lub Oracle, ponieważ Yii posiada wbudowane wsparcie dla wielu aplikacji bazodanowych.
Dla uproszczenia w naszym przykładzie wykorzystamy MySQL.
@ -48,8 +49,9 @@ W tym miejscu masz już utworzoną bazę danych o nazwie `yii2basic`, posiadają
Konfiguracja połączenia z bazą danych <span id="configuring-db-connection"></span>
---------------------------
Przed przystąpieniem do tej części, upewnij się, że masz zainstalowane rozszerzenie [PDO](http://www.php.net/manual/en/book.pdo.php) oraz sterownik PDO dla bazy danych której używasz (np. `pdo_mysql` dla MySQL).
Jest to podstawowe wymaganie jeśli Twoja aplikacja używa relacyjnej bazy danych.
Przed przystąpieniem do tej części, upewnij się, że masz zainstalowane rozszerzenie [PDO](http://www.php.net/manual/en/book.pdo.php) oraz sterownik PDO dla bazy danych której używasz
(np. `pdo_mysql` dla MySQL).
Jest to podstawowe wymaganie, jeśli Twoja aplikacja używa relacyjnej bazy danych.
Jeśli posiadasz zainstalowane powyższe rozszerzenia, otwórz plik `config/db.php` i zmień parametry na odpowiednie do Twojej bazy danych. Domyślnie plik zawiera poniższy fragment:
@ -66,12 +68,14 @@ return [
```
Plik `config/db.php` jest typowym narzędziem [konfiguracyjnym](concept-configurations.md) opartym na plikach.
Ten szczególny plik konfiguracyjny określa parametry potrzebne do utworzenia oraz zainicjalizowania instancji [[yii\db\Connection]], dzięki czemu będziesz mógł wywoływać komendy SQL dp swojej bazy przez aplikację.
Ten szczególny plik konfiguracyjny określa parametry potrzebne do utworzenia oraz zainicjalizowania instancji [[yii\db\Connection|Connection]], dzięki czemu będziesz mógł wywoływać
komendy SQL dp swojej bazy przez aplikację.
Powyższa konfiguracja może być dostępna z poziomu kodu aplikacji używając wyrażenia `Yii::$app->db`.
> Info: Plik `config/db.php` będzie załączony do głównej konfiguracji aplikacji `config/web.php`, która określa jak instancja [aplikacji](structure-applications.md) powinna zostać zainicjalizowana.
Po więcej informacji zajrzyj do sekcji [konfiguracje](concept-configurations.md)
> Info: Plik `config/db.php` będzie załączony do głównej konfiguracji aplikacji `config/web.php`, która określa jak instancja [aplikacji](structure-applications.md) powinna zostać
> zainicjalizowana.
> Po więcej informacji zajrzyj do sekcji [Konfiguracje](concept-configurations.md).
Tworzenie klasy Active Record <span id="creating-active-record"></span>
@ -91,9 +95,10 @@ class Country extends ActiveRecord
}
```
Klasa `Country` rozszerza klasę [[yii\db\ActiveRecord]]. Nie musisz pisać w niej żadnego kodu! Posiadając tylko powyżej podany kod, Yii odgadnie nazwę powiązanej tabeli z nazwy klasy.
Klasa `Country` rozszerza klasę [[yii\db\ActiveRecord|ActiveRecord]]. Nie musisz pisać w niej żadnego kodu! Posiadając tylko powyżej podany kod, Yii odgadnie nazwę powiązanej tabeli
z nazwy klasy.
> Info: Jeśli nie można dopasować tabeli do nazwy klasy, możesz nadpisać metodę [[yii\db\ActiveRecord::tableName()]] aby wskazywała na konkretną powiązaną tabelę.
> Info: Jeśli nie można dopasować tabeli do nazwy klasy, możesz nadpisać metodę [[yii\db\ActiveRecord::tableName()|tableName()]], aby wskazywała na konkretną powiązaną tabelę.
Używając klasy `Country` możesz w łatwy sposób manipulować danymi z tabeli `country`, tak jak pokazano w poniższych przykładach:
@ -115,14 +120,16 @@ $country->save();
```
> Info: Active Record jest potężnym narzędziem do dostępu i manipulacji danymi w bazie danych w sposób zorientowany obiektowo.
Więcej szczegółowych informacji znajdziesz w sekcji [Active Record](db-active-record.md). Alternatywnie, do łączenia się z bazą danych możesz użyć niskopoziomowej metody dostępu do danych nazwanej [Data Access Objects](db-dao.md).
> Więcej szczegółowych informacji znajdziesz w sekcji [Active Record](db-active-record.md). Alternatywnie, do łączenia się z bazą danych możesz użyć niskopoziomowej metody dostępu do
> danych nazwanej [Data Access Objects](db-dao.md).
Tworzenie akcji <span id="creating-action"></span>
------------------
Aby przedstawić kraje użytkownikowi musisz utworzyć nową akcję. Zamiast umieszczać nową akcję w kontrolerze `site`, tak jak w poprzednich sekcjach, bardziej sensownym rozwiązaniem jest utworzenie nowego kontrolera
odpowiedzialnego za wszystkie akcje dotyczące danych z tabeli `country`. Nazwij nowy kontroler `CountryController`, a następnie utwórz w nim akcję `index`, tak jak na poniższym przykładzie:
Aby przedstawić kraje użytkownikowi musisz utworzyć nową akcję. Zamiast umieszczać nową akcję w kontrolerze `site`, tak jak w poprzednich sekcjach, bardziej sensownym rozwiązaniem jest
utworzenie nowego kontrolera odpowiedzialnego za wszystkie akcje dotyczące danych z tabeli `country`. Nazwij nowy kontroler `CountryController`, a następnie utwórz w nim akcję `index`,
tak jak na poniższym przykładzie:
```php
<?php
@ -160,7 +167,7 @@ class CountryController extends Controller
Zapisz powyższy kod w pliku `controllers/CountryController.php`.
Akcja `index` wywołuje metodę `Country::find()`, pochodzącą z klasy Active Record, która buduje zapytanie bazodanowe i wyszukuje wszystkich danych z tabeli `country`.
Aby ograniczyć liczbę zwracanych krajów w każdym żądaniu, zapytanie jest stronicowane przy pomocy obiektu [[yii\data\Pagination]]. Obiekt `Pagination` służy dwóm celom:
Aby ograniczyć liczbę zwracanych krajów w każdym żądaniu, zapytanie jest stronicowane przy pomocy obiektu [[yii\data\Pagination|Pagination]]. Obiekt `Pagination` służy dwóm celom:
* Ustawia klauzule `offset` i `limit` do komend SQL reprezentowanych przez zapytanie tak, aby zwracały tylko jedną stronę na raz (maksymalnie 5 wierszy na stronę),
* Jest używany w widoku do wyświetlania stronicowania jako listy przycisków z numerami stron, co będzie wyjaśnione w kolejnej sekcji.
@ -171,7 +178,8 @@ Na końcu akcja `index` renderuje widok o nazwie `index`, do którego przekazuje
Tworzenie widoku <span id="creating-view"></span>
---------------
W katalogu `views` utwórz nowy katalog o nazwie `country`. Będzie on używany do przechowywania wszystkich plików widoków renderowanych przez kontroler `country`. W katalogu `views/country` utwórz plik o nazwie `index.php` zawierający poniższy kod:
W katalogu `views` utwórz nowy katalog o nazwie `country`. Będzie on używany do przechowywania wszystkich plików widoków renderowanych przez kontroler `country`. W katalogu
`views/country` utwórz plik o nazwie `index.php` zawierający poniższy kod:
```php
<?php
@ -192,7 +200,8 @@ use yii\widgets\LinkPager;
```
Widok posiada dwie części. Pierwsza część odpowiada za wyświetlenie danych krajów jako nieuporządkowana lista HTML, natomiast druga część renderuje widżet [[yii\widgets\LinkPager]] na podstawie dostarczonych mu informacji z akcji.
Widok posiada dwie części. Pierwsza część odpowiada za wyświetlenie danych krajów jako nieuporządkowana lista HTML, natomiast druga część renderuje widżet
[[yii\widgets\LinkPager|LinkPager]] na podstawie dostarczonych mu informacji z akcji.
Widżet `LinkPager` wyświetla listę przycisków z numerami stron. Kliknięcie w którykolwiek z nich zmienia dane z listy na dane odpowiadające wybranej stronie.
Sprawdź jak to działa <span id="trying-it-out"></span>
@ -216,19 +225,21 @@ http://hostname/index.php?r=country/index&page=2
Za kulisami, [[yii\data\Pagination|Pagination]] dostarcza wszystkich niezbędnych funkcjonalności do stronicowania zbioru danych:
* Początkowo, [[yii\data\Pagination|Pagination]] prezentuje pierwszą stronę, która odzwierciedla zapytanie "SELECT" tabeli `country` z klauzulą `LIMIT 5 OFFSET 0`.
W rezultacie pobieranych i wyświetlanych jest pięć pierwszych krajów.
* Widżet [[yii\widgets\LinkPager|LinkPager]] renderuje przyciski stron używając adresów URL tworzonych przez metodę [[yii\data\Pagination::createUrl()|Pagination]]. Adresy zawierają parametr zapytania `page`, który reprezentuje różne numery stron.
* jeśli klikniesz przycisk "2", zostanie uruchomione i przetworzone nowe żądanie dla route'a `country/index`.
[[yii\data\Pagination|Pagination]] odczytuje parametr `query` z adresu URL, a następnie ustawia aktualny numer strony na 2.
Nowe zapytanie o kraje będzie zawierało klauzulę `LIMIT 5 OFFSET 5` i zwróci pięć kolejnych krajów do wyświetlenia.
* Początkowo [[yii\data\Pagination|Pagination]] prezentuje pierwszą stronę, która odzwierciedla zapytanie "SELECT" tabeli `country` z klauzulą `LIMIT 5 OFFSET 0`.
W rezultacie pobieranych i wyświetlanych jest pięć pierwszych krajów.
* Widżet [[yii\widgets\LinkPager|LinkPager]] renderuje przyciski stron używając adresów URL tworzonych przez metodę [[yii\data\Pagination::createUrl()|createUrl()]].
Adresy zawierają parametr zapytania `page`, który reprezentuje różne numery stron.
* Jeśli klikniesz przycisk "2", zostanie uruchomione i przetworzone nowe żądanie dla route'a `country/index`.
[[yii\data\Pagination|Pagination]] odczytuje parametr `query` z adresu URL, a następnie ustawia aktualny numer strony na 2.
Nowe zapytanie o kraje będzie zawierało klauzulę `LIMIT 5 OFFSET 5` i zwróci pięć kolejnych krajów do wyświetlenia.
Podsumowanie <span id="summary"></span>
-------
W tej sekcji nauczyłeś się jak pracować z bazą danych. Nauczyłeś się również jak pobierać i wyświetlać dane ze stronicowaniem przy pomocy [[yii\data\Pagination]] oraz [[yii\widgets\LinkPager]].
W tej sekcji nauczyłeś się jak pracować z bazą danych. Nauczyłeś się również jak pobierać i wyświetlać dane ze stronicowaniem przy pomocy [[yii\data\Pagination|Pagination]] oraz
[[yii\widgets\LinkPager|LinkPager]].
W następnej sekcji nauczysz się jak używać potężnego narzędzie do generowania kodu nazwanego [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md),
aby pomóc Ci w szybki sposób implementować niektóre powszechnie wymagane funkcjonalności, takie jak operacje CRUD dla zadań z danymi w bazie danych.
W rzeczywistości, kod który właśnie napisaliśmy może być w pełni wygenerowany w Yii przy użyciu narzędzia Gii.
Kod, który właśnie napisaliśmy, może być w całości automatycznie wygenerowany w Yii przy użyciu narzędzia Gii.

57
docs/guide-pl/start-forms.md

@ -44,10 +44,10 @@ class EntryForm extends Model
}
```
Klasa `EntryForm` rozszerza [[yii\base\Model]], podstawową klasę dostarczoną przez Yii, głównie używaną do reprezentowania danych z formularzy.
Klasa `EntryForm` rozszerza [[yii\base\Model|Model]], podstawową klasę dostarczoną przez Yii, głównie używaną do reprezentowania danych z formularzy.
> Info: [[yii\base\Model]] jest używane jako rodzic dla klasy modeli *NIE* powiązanych z tabelą bazy danych.
[[yii\db\ActiveRecord]] jest rodzicem dla klas modeli powiązanych z tabelami bazy danych.
> Info: [[yii\base\Model|Model]] jest używane jako rodzic dla klasy modeli *NIE* powiązanych z tabelą bazy danych.
> [[yii\db\ActiveRecord|ActiveRecord]] jest rodzicem dla klas modeli powiązanych z tabelami bazy danych.
Klasa `EntryForm` zawiera dwa elementy publiczne, `name` oraz `email`, które są używane do przechowania danych wprowadzonych przez użytkownika.
Zawieta również metodą nazwaną `rules()`, która zwraca zestaw zasad do walidacji wprowadzonych danych. Zadeklarowane zasady oznaczają:
@ -55,8 +55,10 @@ Zawieta również metodą nazwaną `rules()`, która zwraca zestaw zasad do wali
* wartości w polach `name` oraz `email są wymagane
* wartość pola `email` musi być prawidłowym adresem email
Jeśli posiadasz uzupełniony obiekt `EntryForm` danymi wprowadzonymi przez użytkownika, możesz wywołać jego funkcję [[yii\base\Model::validate()|validate()]], aby uruchomić procedurę sprawdzania poprawności danych.
W przypadku wystąpienia błędów w walidacji, wartość [[yii\base\Model::hasErrors|hasErrors]] zostanie ustawiona na `true`. Możesz zobaczyć jakie błędy wystąpiły za pomocą metody [[yii\base\Model::getErrors|errors]].
Jeśli posiadasz uzupełniony obiekt `EntryForm` danymi wprowadzonymi przez użytkownika, możesz wywołać jego funkcję [[yii\base\Model::validate()|validate()]], aby uruchomić procedurę
sprawdzania poprawności danych.
W przypadku wystąpienia błędów w walidacji, wartość [[yii\base\Model::hasErrors|hasErrors]] zostanie ustawiona na `true`. Możesz zobaczyć jakie błędy wystąpiły za pomocą metody
[[yii\base\Model::getErrors()|getErrors()]].
```php
<?php
@ -75,7 +77,8 @@ if ($model->validate()) {
Tworzenie akcji <span id="creating-action"></span>
------------------
Następnie musisz utworzyć akcję o nazwie `entry` w kontrolerze `site`, która użyje Twojego nowego modelu. Proces tworzenia i używania akcji był wytłumaczony w sekcji [Witaj świecie](start-hello.md)
Następnie musisz utworzyć akcję o nazwie `entry` w kontrolerze `site`, która użyje Twojego nowego modelu. Proces tworzenia i używania akcji był wytłumaczony w sekcji
[Witaj świecie](start-hello.md).
```php
<?php
@ -108,23 +111,26 @@ class SiteController extends Controller
}
```
Akcja tworzy na początku obiekt `EntryForm`. Następnie próbuje uzupełnić model danymi ze zmiennej `$_POST`, dostarczanymi w Yii przez metodę [[yii\web\Request::post()]].
Jeśli model został prawidłowo uzupełniony(np. jeśli użytkownik wysłał formularz HTML), akcja wywoła metodę [[yii\base\Model::validate()|validate()]] aby upewnić się, że wprowadzone dane są prawidłowe.
Akcja tworzy na początku obiekt `EntryForm`. Następnie próbuje uzupełnić model danymi ze zmiennej `$_POST`, dostarczanymi w Yii przez metodę [[yii\web\Request::post()|post()]].
Jeśli model został prawidłowo uzupełniony(np. jeśli użytkownik wysłał formularz HTML), akcja wywoła metodę [[yii\base\Model::validate()|validate()]], aby upewnić się, że wprowadzone
dane są prawidłowe.
> Info: Wyrażenie `Yii::$app` reprezentuje instancję [aplikacji](structure-applications.md), która jest globalnie dostępnym singletonem.
Jest również [lokatorem usług](concept-service-locator.md), który dostarcza komponenty takie jak `request`, `response` lub `db` do wsparcia specyficznej funkcjonalności.
W powyższym kodzie użyty jest komponent `request` aby uzyskać dostęp do danych w zmiennej `$_POST`.
> Jest również [lokatorem usług](concept-service-locator.md), który dostarcza komponenty takie jak `request`, `response` lub `db` do wsparcia specyficznej funkcjonalności.
> W powyższym kodzie użyty jest komponent `request` aby uzyskać dostęp do danych w zmiennej `$_POST`.
Jeśli wszystko jest w porządku, akcja wyrenderuje widok o nazwie `entry-confirm` w celu potwierdzenia prawidłowego przesłania danych przez użytkownika.
Jeśli nie zostały wysłane żadne dane lub dane zawierają błędy, zostanie wyrenderowany widok `entry`, w którym będzie pokazany formularz HTML wraz z wiadomościami błędów walidacji.
> Note: W tym prostym przykładzie po prostu renderujemy stronę z potwierdzeniem prawidłowego przesłania danych. W praktyce powinieneś rozważyć użycie [[yii\web\Controller::refresh()|refresh()]] lub [[yii\web\Controller::redirect()|redirect()]] aby uniknąć [problemów z ponownym przesłaniem formularza](http://en.wikipedia.org/wiki/Post/Redirect/Get).
> Note: W tym prostym przykładzie po prostu renderujemy stronę z potwierdzeniem prawidłowego przesłania danych.
> W praktyce powinieneś rozważyć użycie [[yii\web\Controller::refresh()|refresh()]] lub [[yii\web\Controller::redirect()|redirect()]], aby uniknąć
> [problemów z ponownym przesłaniem formularza](http://en.wikipedia.org/wiki/Post/Redirect/Get).
Tworzenie widoku <span id="creating-views"></span>
--------------
Na koniec, utwórz dwa pliki o nazwach `entry-confirm` oraz `entry`. Będą one renderowane przez akcję `entry`, tak jak to przed chwilą opisaliśmy.
Na koniec utwórz dwa pliki o nazwach `entry-confirm` oraz `entry`. Będą one renderowane przez akcję `entry`, tak jak to przed chwilą opisaliśmy.
Widok `entry-confirm` wyświelta po prostu dane `name` oraz `email`. Powinien być zapisany w pliku `views/site/entry-confirm.php`.
@ -161,20 +167,22 @@ use yii\widgets\ActiveForm;
```
Widok używa potężnego [widżetu](structure-widgets.md) nazwanego [[yii\widgets\ActiveForm|ActiveForm]] do budowania formularza HTML.
Metody `begin()` oraz `end()` renderują odpowiednio otwierające i zamykające tagi formularza. Pomiędzy wywołaniami tych dwóch metod, pola do wprowadzania są tworzone przez metodę [[yii\widgets\ActiveForm::field()|field()]].
Następnie, po polach do wprowadzania danych, wywoływana jest metoda [[yii\helpers\Html::submitButton()]] do wygenerowania przycisku "Wyślij", który wysyła formularz.
Metody `begin()` oraz `end()` renderują odpowiednio otwierające i zamykające tagi formularza. Pomiędzy wywołaniami tych dwóch metod, pola do wprowadzania są tworzone przez metodę
[[yii\widgets\ActiveForm::field()|field()]].
Następnie, po polach do wprowadzania danych, wywoływana jest metoda [[yii\helpers\Html::submitButton()|submitButton()]] do wygenerowania przycisku "Wyślij", który wysyła formularz.
Próba <span id="trying-it-out"></span>
-------------
Aby zobaczyć jak to działa, użyj przeglądarki aby przejść pod dany adres:
Aby zobaczyć jak to działa, użyj przeglądarki i przejdź pod dany adres:
```
http://hostname/index.php?r=site/entry
```
Zobaczysz stronę wyświetlającą formularz z dwoma polami. Przed każdym polem znajduje się etykieta opisująca to pole. Jeśli klikniesz przycisk "Wyślij" nie wpisując żadnych danych, lub jeśli nie wprowadzisz prawidłowego adresu email, zobaczysz wiadomość błędu wyświeloną pod polem którego ona dotyczy.
Zobaczysz stronę wyświetlającą formularz z dwoma polami. Przed każdym polem znajduje się etykieta opisująca to pole. Jeśli klikniesz przycisk "Wyślij" nie wpisując żadnych danych, lub
jeśli nie wprowadzisz prawidłowego adresu email, zobaczysz wiadomość błędu wyświeloną pod polem którego ona dotyczy.
![Formularz z błędami walidacji](../guide/images/start-form-validation.png)
@ -185,14 +193,17 @@ Po wpisaniu prawidłowej nazwy, adresu email oraz kliknięciu przycisku "Wyślij
### "Wyjaśnienie magii" <span id="magic-explained"></span>
Możesz się zastanawiać, jak działa ten formularz HTML, ponieważ wydaje się prawie magicznym to, że wyświetla etykietę do każdego pola oraz wyświetla komunikat błędu, jeśli wprowadzisz błędne dane, bez przeładowania strony.
Możesz się zastanawiać jak działa ten formularz HTML, ponieważ wydaje się prawie magicznym to, że wyświetla etykietę do każdego pola oraz wyświetla komunikat błędu, jeśli wprowadzisz
błędne dane, bez przeładowania strony.
Wstępna walidacja jest wykonywana po stronie klienta używając JavaScript'u, kolejnie dopiero po stronie serwera przez PHP.
[[yii\widgets\ActiveForm]] potrafi wyodrębnić zasady walidacji, które zadeklarowałeś w `EntryForm`, przekształcić je w wykonywalny kod JavaScript oraz użyć go do walidacji danych.
Wstępna walidacja jest wykonywana po stronie klienta używając JavaScriptu, kolejnie dopiero po stronie serwera przez PHP.
[[yii\widgets\ActiveForm|ActiveForm]] potrafi wyodrębnić zasady walidacji, które zadeklarowałeś w `EntryForm`, przekształcić je w wykonywalny kod JavaScript oraz użyć go do walidacji
danych.
Jeśli zablokowałeś JavaScript w swojej przeglądarce, walidacja wciąż będzie wykonywana po stronie serwera, jak pokazano w metodzie `actionEntry()`.
Gwarantuje to prawidłowość danych w każdych okolicznościach.
Gwarantuje to poprawność danych w każdych okolicznościach.
> Warning: Walidacja po stronie klienta jest opcją, która zapewnia lepsze doświadczenia dla użytkownika. Walidacja po stronie serwera jest zawsze wymagana, niezależnie czy walidacja po stronie klienta jest włączona, czy nie.
> Warning: Walidacja po stronie klienta jest opcją, która zapewnia wygodniejszą współpracę aplikacji z użytkownikiem. Walidacja po stronie serwera jest zawsze wymagana, niezależnie,
czy walidacja po stronie klienta jest włączona, czy też nie.
Etykiety dla pól w formularzu generowane są przy pomocy metody `field()`, używającej nazw właściwości z modelu.
Dla przykładu, etykieta `Name` zostanie wygenerowana dla właściwości `name`.
@ -205,8 +216,8 @@ Możesz dostosowywać etykiety w widoku, używając poniższego kodu:
```
> Info: Yii dostarcza wiele podobnych widżetów, które pomogą Ci szybko tworzyć złożone i dynamiczne widoki.
Tak jak nauczysz się później, pisanie nowego widżetu jest ekstremalnie łatwe.
Będziesz mógł przekształcić Twój kod widoku na widżet do wielokrotnego użytku, aby uprościć rozwój swoich widoków w przyszłości.
> Tak jak nauczysz się później, pisanie nowego widżetu jest ekstremalnie łatwe.
> Będziesz mógł przekształcić Twój kod widoku na widżet do wielokrotnego użytku, aby uprościć rozwój swoich widoków w przyszłości.
Podsumowanie <span id="summary"></span>

51
docs/guide-pl/start-gii.md

@ -1,7 +1,8 @@
Generowanie kodu za pomocą Gii
========================
Ta sekcja opisuje jak używać [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md) do automatycznego generowania kodu, który implementuje podstawowe funkcjonalności do aplikacji Web.
Ta sekcja opisuje jak używać [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md) do automatycznego generowania kodu, który implementuje podstawowe
funkcjonalności do aplikacji Web.
Używanie Gii do automatycznego generowania kodu jest po prostu kwestią wprowadzenia odpowiednich informacji w formularzach zgodnie z instrukcjami widocznymi na podstronach Gii.
W tym poradniku nauczysz się:
@ -15,8 +16,9 @@ W tym poradniku nauczysz się:
Początki z Gii <span id="starting-gii"></span>
------------
[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md) jest dostarczonym przez Yii [modułem](structure-modules.md).
Możesz aktywować Gii konfigurując właściwość [[yii\base\Application::modules|modules]] aplikacji. Zależnie od tego, jak utworzyłeś swoją aplikację, może się okazać, że poniższy kod jest już zawarty w pliku konfiguracyjnym `config/web.php`:
[Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md) jest [modułem](structure-modules.md) dostarczonym przez Yii.
Możesz aktywować Gii konfigurując właściwość [[yii\base\Application::modules|modules]] aplikacji. Zależnie od tego, jak utworzyłeś swoją aplikację, może się okazać, że poniższy kod jest
już zawarty w pliku konfiguracyjnym `config/web.php`:
```php
$config = [ ... ];
@ -29,15 +31,16 @@ if (YII_ENV_DEV) {
}
```
Powyższa konfiguracja sprawdza, czy aplikacja jest w [środowisku rozwojowym](concept-configurations.md#environment-constants), jeśli tak, dołącza moduł `gii` określając klasę modułu [[yii\gii\Module]].
Powyższa konfiguracja sprawdza, czy aplikacja jest w [środowisku rozwojowym](concept-configurations.md#environment-constants) - jeśli tak, dołącza moduł `gii` określając klasę modułu
[[yii\gii\Module]].
Jeśli sprawdzisz [skrypt wejściowy](structure-entry-scripts.md) `web/index.php` Twojej aplikacji, zauważysz linię, która ustawia `YII_ENV` na wartość `dev`.
Jeśli sprawdzisz [skrypt wejściowy](structure-entry-scripts.md) `web/index.php` Twojej aplikacji, zauważysz linię kodu, która ustawia `YII_ENV` na wartość `dev`.
```php
defined('YII_ENV') or define('YII_ENV', 'dev');
```
Dzięki tej linii, Twoja aplikacja jest w trybie rozwojowym, przez co aktywny jest moduł Gii. Możesz teraz uzyskać dostęp do Gii przez przejście pod podany adres URL:
Dzięki temu Twoja aplikacja ustawiana jest w tryb rozwojowy, co uaktywnia moduł Gii. Możesz teraz uzyskać dostęp do Gii przez przejście pod podany adres URL:
```
http://hostname/index.php?r=gii
@ -66,20 +69,24 @@ Aby użyć Gii do wygenerowania klasy Active Record, wybierz "Model Generator" z
![Generator modeli](../guide/images/start-gii-model.png)
Następnie, kliknij przycisk "Preview". Powinieneś zauważyć na liście plik `models/Country.php` który zostanie utworzony. Możesz kliknąć w nazwę pliku aby zobaczyć podgląd jego zawartości.
Następnie kliknij przycisk "Preview". Powinieneś zauważyć na liście plik `models/Country.php`, który zostanie utworzony. Możesz kliknąć w nazwę pliku aby zobaczyć podgląd
jego zawartości.
Podczas używania Gii, jeśli posiadałeś już utworzony plik o tej samej nazwie i będziesz chciał go nadpisać, kliknij w przycisk `diff` obok nazwy pliku aby zobaczyć różnice w kodzie pomiędzy wygenerowanym a już istniejącym plikiem.
Podczas używania Gii, jeśli posiadałeś już utworzony plik o tej samej nazwie i będziesz chciał go nadpisać, kliknij w przycisk `diff` obok nazwy pliku, aby zobaczyć różnice w kodzie
pomiędzy wygenerowanym, a już istniejącym plikiem.
![Podgląd generatora modeli](../guide/images/start-gii-model-preview.png)
Podczas nadpisywania istniejącego już pliku musisz zaznaczyć opcję "overwrite", a kolejnie kliknąć przycisk "Generate". Jeśli tworzysz nowy plik, wystarczy jeśli klikniesz "Generate".
Podczas nadpisywania istniejącego już pliku musisz zaznaczyć opcję "overwrite", a następnie kliknąć przycisk "Generate". Jeśli tworzysz nowy plik, wystarczy kliknięcie "Generate".
Następnie zobaczysz stronę potwierdzającą, że kod został pomyślnie wygenerowany. Jeśli nadpisywałeś istniejący już plik, zobaczysz również wiadomość o nadpisaniu go nowo wygenerowanym kodem.
Następnie zobaczysz stronę potwierdzającą, że kod został pomyślnie wygenerowany. Jeśli nadpisywałeś istniejący już plik, zobaczysz również wiadomość o nadpisaniu go nowo wygenerowanym
kodem.
Generowanie kodu CRUD <span id="generating-crud"></span>
--------------------
CRUD oznacza tworzyć, czytać, aktualizować oraz usuwać (Create-Read-Update-Delete), reprezentuje cztery podstawowe zadania dotyczące obsługi danych w większości serwisów internetowych.
Akronim CRUD pochodzi od słów *tworzenie*, *odczytywanie*, *aktualizowanie* oraz *usuwanie* (Create-Read-Update-Delete) i reprezentuje cztery podstawowe zadania dotyczące obsługi
danych w większości serwisów internetowych.
Aby utworzyć funkcjonalność CRUD używając Gii, wybierz na stronie głównej Gii "CRUD Generator". Do przykładu "country" uzupełnij formularz następująco:
* Model Class: `app\models\Country`
@ -88,16 +95,17 @@ Aby utworzyć funkcjonalność CRUD używając Gii, wybierz na stronie głównej
![Generator CRUD](../guide/images/start-gii-crud.png)
Następnie kliknij przycisk "Preview". Zobaczysz listę plików które zostaną wygenerowane, tak jak pokazano niżej.
Następnie kliknij przycisk "Preview". Zobaczysz listę plików, które zostaną wygenerowane, tak jak pokazano niżej.
![Podgląd generatora CRUD](../guide/images/start-gii-crud-preview.png)
Jeśli wcześniej utworzyłeś pliki `controllers/CountryController.php` oraz `views/country/index.php` (w sekcji baz danych tego poradnika), zaznacz opcję "overwrite" aby je zastąpić (Poprzednia wersja nie posiada pełnego wsparcia CRUD).
Jeśli wcześniej utworzyłeś pliki `controllers/CountryController.php` oraz `views/country/index.php` (w sekcji baz danych tego poradnika), zaznacz opcję "overwrite", aby je zastąpić
(poprzednia wersja nie posiada pełnego wsparcia CRUD).
Próba <span id="trying-it-out"></span>
-------------
Sprawdzenie w działaniu <span id="trying-it-out"></span>
-----------------------
Aby zobaczyć jak działa nowo wygenerowany kod użyj przeglądarki aby uzyskać dostęp do podanego adresu URL:
Aby zobaczyć, jak działa nowo wygenerowany kod, użyj przeglądarki, aby uzyskać dostęp do podanego adresu URL:
```
http://hostname/index.php?r=country/index
@ -106,25 +114,24 @@ http://hostname/index.php?r=country/index
Zobaczysz tabelę prezentującą kraje z bazy danych. Możesz sortować tabelę, lub filtrować ją przez wpisanie odpowiednich warunków w nagłówkach kolumn.
Dla każdego wyświetlanego kraju możesz zobaczyć jego szczegóły, zaktualizować go lub usunąć.
Możesz również kliknąć przycisk "Create Country" aby przejść do formularza tworzenia nowego państwa.
Możesz również kliknąć przycisk "Create Country", aby przejść do formularza tworzenia nowego państwa.
![Siatka danych krajów](../guide/images/start-gii-country-grid.png)
![Aktualizacja kraju](../guide/images/start-gii-country-update.png)
Poniżej przedstawiamy listę plików wygenerowanych przez Gii, jeśli chciałbyś zbadać jak zostały zaimplementowane te funkcjonalności (lub je edytować):
Poniżej przedstawiamy listę plików wygenerowanych przez Gii, gdybyś chciał zbadać jak zostały zaimplementowane powyższe funkcjonalności (lub je edytować):
* Kontroler: `controllers/CountryController.php`
* Model: `models/Country.php` and `models/CountrySearch.php`
* Widok: `views/country/*.php`
> Info Gii zostało zaprojektowane jako wysoce konfiguralne i rozszerzalne narzędzie przeznaczone do generowania kodu.
Prawidłowe używanie go może znacznie przyspieszyć szybkość tworzenia Twojej aplikacji. Po więcej szczegółów zajrzyj do sekcji [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md)
> Info: Gii zostało zaprojektowane jako wysoce konfiguralne i rozszerzalne narzędzie przeznaczone do generowania kodu.
> Prawidłowe używane może znacznie przyspieszyć szybkość tworzenia Twojej aplikacji. Po więcej szczegółów zajrzyj do sekcji
> [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md).
Podsumowanie <span id="summary"></span>
-------
W tej sekcji nauczyłeś się jak używać Gii do wygenerowania kodu, który implementuje pełną funkcjonalność CRUD dla treści zawartch w tabelach bazy danych.
In this section, you have learned how to use Gii to generate the code that implements complete
CRUD functionality for content stored in a database table.

43
docs/guide-pl/start-hello.md

@ -20,7 +20,7 @@ Do zadania "Witaj" utworzysz [akcję](structure-controllers.md#creating-actions)
Jeśli żądanie nie dostarczy parametru `message`, akcja wyświetli domyślnie wiadomość "Witaj".
> Info: [Akcje](structure-controllers.md#creating-actions) są obiektami, do których użytkownik może bezpośrednio odnieść się, aby je wywołać.
Akcje są pogrupowane przez [kontrolery](structure-controllers.md). Wynikiem użycia akcji jest odpowiedź, którą otrzyma końcowy użytkownik.
> Akcje są pogrupowane w [kontrolery](structure-controllers.md). Wynikiem użycia akcji jest odpowiedź, którą otrzyma końcowy użytkownik.
Akcje muszą być deklarowane w [kontrolerach](structure-controllers.md). Dla uproszczenia, możesz zdeklarować akcję `say` w już istniejącym kontrolerze `SiteController`.
Kontroler jest zdefiniowany w klasie `controllers/SiteController.php`. Oto początek nowej akcji:
@ -47,20 +47,22 @@ W powyższym kodzie, akcja `say` jest zdefiniowana jako metoda o nazwie `actionS
Yii używa prefixu `action` do rozróżnienia metod akcji od zwykłych metod w klasie kontrolera. Nazwa po prefixie `action` kieruje do ID akcji.
Podczas nazywania Twoich akcji powinieneś zrozumieć jak Yii traktuje ID akcji. Odwołanie do ID akcji zawsze występuje z małych liter.
Jeśli ID akcji potrzebuje wielu słów, będą one łączone myślnikami (np. `create-comment`). Nazwy metod akcji są przypisywane do ID akcji przez usunięcie myślników z ID, przekształcenie piewszej litery w słowie na dużą literę
oraz dodanie prefixu `action`. Dla przykładu akcja o ID `create-comment` odpowiada metodzie akcji o nazwie `actionCreateComment`.
Jeśli ID akcji potrzebuje wielu słów, będą one łączone myślnikami (np. `create-comment`). Nazwy metod akcji są przypisywane do ID akcji przez usunięcie myślników z ID, przekształcenie
piewszej litery w słowie na dużą literę oraz dodanie prefixu `action`. Dla przykładu akcja o ID `create-comment` odpowiada metodzie akcji o nazwie `actionCreateComment`.
Metoda akcji w naszym przykładzie przyjmuje parametr `$message`, którego wartość domyślna to `"Hello"` (w ten sam sposób ustawiasz domyślną wartość dla każdego argumentu funkcji lub metody w PHP).
Metoda akcji w naszym przykładzie przyjmuje parametr `$message`, którego wartość domyślna to `"Hello"` (w ten sam sposób ustawiasz domyślną wartość dla każdego argumentu funkcji lub
metody w PHP).
Kiedy aplikacja otrzymuje żądanie i określa, że akcja `say` jest odpowiedzialna za jego obsługę, aplikacja uzupełni parametr znaleziony w żądaniu.
Innymi słowy, jeśli żądanie zawiera parametr `message` z wartością `"Goodbye"` to do zmiennej `$message` w akcji będzie przypisana ta wartość.
W metodzie akcji wywołana jest funkcja [[yii\web\Controller::render()|render()]], która renderuje nam [widok](structure-views.md) pliku o nazwie `say`.
Parametr `message` jest również przekazywany do widoku, co sprawia, że może być w nim użyty. Metoda akcji zwraca wynik renderowania. Wynik ten będzie odebrany przez aplikację oraz wyświetlony końcowemu użytownikowi w przeglądarce(jako część kompletnej strony HTML).
Parametr `message` jest również przekazywany do widoku, co sprawia, że może być w nim użyty. Metoda akcji zwraca wynik renderowania. Wynik ten będzie odebrany przez aplikację oraz
wyświetlony końcowemu użytownikowi w przeglądarce (jako część kompletnej strony HTML).
Tworzenie widoku <span id="creating-view"></span>
---------------
[Widoki](structure-views.md) są skryptami, które piszesz do generowania treści odpowiedzi.
[Widoki](structure-views.md) są skryptami, które tworzysz w celu wyświetlenia treści odpowiedzi.
Do zadania "Hello" utworzysz widok `say`, który wypisuje parametr `message` otrzymany z metody akcji.
```php
@ -70,10 +72,11 @@ use yii\helpers\Html;
<?= Html::encode($message) ?>
```
Widok `say` powinien być zapisany w pliku `views/site/say.php`. Kiedy wywołana jest metoda [[yii\web\Controller::render()|render()]] w akcji, będzie ona szukała pliku PHP nazwanego jako `views/ControllerID/ViewName.php`.
Widok `say` powinien być zapisany w pliku `views/site/say.php`. Kiedy wywołana jest metoda [[yii\web\Controller::render()|render()]] w akcji, będzie ona szukała pliku PHP nazwanego
wg schematu `views/ControllerID/ViewName.php`.
Zauważ, że w powyższym kodzie parametr `message` jest kodowany funkcją [[yii\helpers\Html::encode()|HTML-encoded]] przed wypisaniem go. Jest to konieczne w przypadku, gdy parametr pochodzi od użytkownika, co sprawia go wrażliwym na ataki
[XSS](http://en.wikipedia.org/wiki/Cross-site_scripting) przez podanie złośliwego kodu JavaScript w parametrze.
Zauważ, że w powyższym kodzie parametr `message` jest przetworzony za pomocą metody [[yii\helpers\Html::encode()|encode()]] przed wyświetleniem go. Jest to konieczne w przypadku
parametrów pochodzących od użytkownika, wrażliwych na ataki [XSS](http://en.wikipedia.org/wiki/Cross-site_scripting) przez podanie złośliwego kodu JavaScript.
Naturalnie możesz umieścić więcej zawartości w widoku `say`. Zawartość może zawierać tagi HTML, czysty tekst, a nawet kod PHP.
Tak naprawdę, widok `say` jest tylko skryptem PHP, który jest wywoływany przez metodę [[yii\web\Controller::render()|render()]].
@ -92,18 +95,22 @@ http://hostname/index.php?r=site/say&message=Hello+World
Wynikiem wywołania tego adresu jest wyświetlenie napisu "Hello World". Strona dzieli ten sam nagłówek i stopkę z innymi stronami aplikacji.
Jeśli pominiesz parametr `message` w adresie URL, zobaczysz na stronie tylko "Hello". `message` jest przekazywane jako parametr do metody `actionSay`, i jeśli zostanie pominięty, zostanie użyta domyślna wartość `"Hello"`.
Jeśli pominiesz parametr `message` w adresie URL, zobaczysz na stronie tylko "Hello". `message` jest przekazywane jako parametr do metody `actionSay` i, jeśli zostanie pominięty,
zostanie użyta domyślna wartość `"Hello"`.
> Info: Nowa strona dzieli ten sam nagłówek i stopkę z innymi stronami, ponieważ metoda [[yii\web\Controller::render()|render()]] automatycznie osadza wynik widoku `say` w tak zwanym [układzie strony](structure-views.md#layouts),
który, w tym przypadku, znajduje się w `views/layouts/main.php`.
> Info: Nowa strona dzieli ten sam nagłówek i stopkę z innymi stronami, ponieważ metoda [[yii\web\Controller::render()|render()]] automatycznie osadza wynik widoku `say` w tak zwanym
[układzie strony](structure-views.md#layouts), który, w tym przypadku, znajduje się w `views/layouts/main.php`.
Parametr `r` w powyższym adresie URL potrzebuje większego wyjaśnienia. Oznacza on [route'a](runtime-routing.md), szeroki, unikatowy ID aplikacji, który odnosi się do akcji.
Format route'a to `ControllerID/ActionID`. Kiedy aplikacja otrzymuje żądanie, sprawdza ten parametr, a kolejnie używa części `ControllerID` aby ustalić, która klasa kontrolera powinna zostać zainstancjowana aby przetworzyć to żądanie.
Następnie, kontroler używa części `ActionID` do ustalenia która akcja powinna zostać użyta. W tym przykładzie, route `site/say` będzie odczytany jako klasa kontrolera `SiteController` oraz akcja `say`.
W rezultacie będzie wywołana metoda `SiteController::actionSay()` to przetworzenia tego żądania.
Parametr `r` w powyższym adresie URL wymaga głębszego objaśnienia. Oznacza on [route'a](runtime-routing.md), identyfikator akcji unikatowy w obrębie aplikacji.
Format route'a to `ControllerID/ActionID`. Kiedy aplikacja otrzymuje żądanie, sprawdza ten parametr, a następnie używa części `ControllerID`, aby ustalić, która klasa kontrolera
powinna zostać zainstancjowana dla przetworzenia tego żądania.
Następnie, kontroler używa części `ActionID` do ustalenia, która akcja powinna zostać użyta. W tym przykładzie, route `site/say` będzie odczytany jako klasa kontrolera `SiteController`
oraz akcja `say`.
W rezultacie zostanie wywołana metoda `SiteController::actionSay()`.
> Info: Tak jak akcje, kontrolery również posiadają swoje ID, które jednoznacznie identyfikują je w aplikacji.
ID kontrolerów używają tych samych zasad nazewnictwa co ID akcji. Nazwy klas kontrolerów uzyskiwane są z ID kontrolerów przez usunięcie myślników z ID, zamianę pierwszej litery na dużą w każdym słowie oraz dodanie suffix'a `Controller`.
> Info: Tak jak i akcje, kontrolery również posiadają swoje ID, które jednoznacznie identyfikuje je w aplikacji.
> ID kontrolerów używają tych samych zasad nazewnictwa, co ID akcji. Nazwy klas kontrolerów uzyskiwane są z ID kontrolerów przez usunięcie myślników z ID, zamianę pierwszej litery na
wielką w każdym słowie oraz dodanie przyrostka `Controller`.
Dla przykładu ID kontrolera `post-comment` odpowiada nazwie klasy kontrolera `PostCommentController`.
Podsumowanie <span id="summary"></span>

83
docs/guide-pl/start-installation.md

@ -2,7 +2,7 @@ Instalacja Yii
==============
Yii możesz zainstalować na dwa sposoby, korzystając z [Composera] (https://getcomposer.org/) lub pobierając plik archiwum.
Pierwszy z nich jest najlepszym sposobem, ponieważ pozwala Ci na instalację nowych [rozszerzeń](structure-extensions.md) lub aktualizację Yii przez wywołanie jednej komendy.
Pierwszy z nich jest najlepszym sposobem, ponieważ pozwala na instalację nowych [rozszerzeń](structure-extensions.md) lub aktualizację Yii przez wywołanie jednej komendy.
Standardowa instalacja Yii skutkuje pobraniem i zainstalowaniem całego framework'a oraz szablonu projektu.
Szablon projektu jest działającym projektem Yii zawierającym w sobie podstawowe funkcjonalności, takie jak logowanie, formularz kontaktowy itp.
@ -13,12 +13,12 @@ Yii dostarcza również drugi, [zaawansowany szablon projektu](https://github.co
dla programistów tworzących wielowarstwowe aplikacje.
> Info: Podstawowy szablon projektu jest odpowiedni dla 90% aplikacji webowych. Główną różnicą, w porównaniu do zaawansowanego szablonu projektu, jest organizacja kodu.
Jeśli dopiero zaczynasz swoją przygodę z Yii, mocno zalecamy trzymać się podstawowego szablonu, ze względu na jego prostotę oraz wystarczającą funkcjonalność.
> Jeśli dopiero zaczynasz swoją przygodę z Yii, mocno zalecamy trzymać się podstawowego szablonu, ze względu na jego prostotę oraz wystarczającą funkcjonalność.
Instalacja przez Composer <span id="installing-via-composer"></span>
-----------------------
Jeśli nie posiadasz jeszcze zainstalowanego Composer'a to możesz to zrobić podążając według zamieszczonych na [getcomposer.org](https://getcomposer.org/download/) instrukcji.
Jeśli nie posiadasz jeszcze zainstalowanego Composera to możesz to zrobić podążając według zamieszczonych na [getcomposer.org](https://getcomposer.org/download/) instrukcji.
W systemach operacyjnych Linux i Mac OS X należy wywołać następujące komendy:
curl -sS https://getcomposer.org/installer | php
@ -26,23 +26,26 @@ W systemach operacyjnych Linux i Mac OS X należy wywołać następujące komend
W systemie Windows należy pobrać i uruchomić [Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe).
W przypadku napotkania jakichkolwiek problemów lub chęci zdobycia większej ilości informacji na temat korzystania z Composer'a zalecamy odniesienie się do [dokumentacji](https://getcomposer.org/doc/)
W przypadku napotkania jakichkolwiek problemów lub chęci zdobycia większej ilości informacji na temat korzystania z Composer'a zalecamy odniesienie się do
[dokumentacji](https://getcomposer.org/doc/)
Jeśli posiadałeś już wcześniej zainstalowanego Composer'a, upewnij się, że jest on zaktualizowany. Composer możesz zaktualizować wywołując komendę 'composer self-update'.
Jeśli posiadałeś już wcześniej zainstalowanego Composera, upewnij się, że jest on zaktualizowany. Composer można zaktualizować wywołując komendę 'composer self-update'.
Z zainstalowanym Composer'em możesz przejść do instalacji Yii wywołując poniższe komendy w katalogu dostępnym w sieci web:
Z zainstalowanym Composerem możesz przejść do instalacji Yii wywołując poniższe komendy w katalogu dostępnym z poziomu sieci web:
composer global require "fxp/composer-asset-plugin:~1.1.1"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
Pierwsza komenda instaluje [wtyczkę zasobów](https://github.com/francoispluchino/composer-asset-plugin/), która pozwala na zarządzanie zasobami [Bower'a](http://bower.io) oraz [paczkami zależności NPM](https://www.npmjs.com/) przez Composer.
Komendę tą wystarczy wywołać raz, po czym wtyczka będzie już na stałe zainstalowana.
Pierwsza komenda instaluje [wtyczkę zasobów](https://github.com/francoispluchino/composer-asset-plugin/), która pozwala na zarządzanie zasobami [Bowera](http://bower.io) oraz
[paczkami zależności NPM](https://www.npmjs.com/) przez Composer.
Komendę tę wystarczy wywołać raz, po czym wtyczka będzie już na stałe zainstalowana.
Druga komenda instaluje Yii w katalogu `basic`. Jeśli chcesz, możesz wybrać katalog o innej nazwie.
> Note: Podczas instalacji Composer może zapytać o Twoje dane uwierzytelniające do Github'a. Jest to normalna sytuacja, ponieważ Composer potrzebuje wystarczającego limitu prędkości API
> do pobrania informacji o pakiecie zależnym z Github'a. Więcej szczegółów znajdziesz w [dokumentacji Composer'a](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens).
> Note: Podczas instalacji Composer może zapytać o Twoje dane uwierzytelniające w serwisie Github. Jest to normalna sytuacja, ponieważ Composer potrzebuje wystarczającego limitu
> prędkości API do pobrania informacji o pakiecie zależnym z Githuba. Więcej szczegółów znajdziesz w
> [dokumentacji Composera](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens).
> Tip: Jeśli chcesz zainstalować najnowszą wersję deweloperską Yii użyj poniższej komendy, która dodaje [opcję stabilności](https://getcomposer.org/doc/04-schema.md#minimum-stability):
> Tip: Jeśli chcesz zainstalować najnowszą wersję deweloperską Yii, użyj poniższej komendy, która dodaje [opcję stabilności](https://getcomposer.org/doc/04-schema.md#minimum-stability):
>
> composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
>
@ -54,40 +57,44 @@ Instalacja z pliku archiwum <span id="installing-from-archive-file"></span>
Instalacja Yii z pliku archiwum dotyczy trzech kroków:
1. Pobranie pliku archiwum z [yiiframework.com](http://www.yiiframework.com/download/).
2. Rozpakowanie pliku archiwum do katalogu dostępnego w sieci web.
2. Rozpakowanie pliku archiwum do katalogu dostępnego z poziomu sieci web.
3. Zmodyfikowanie pliku `config/web.php` przez dodanie sekretnego klucza do elementu konfiguracji `cookieValidationKey`
(jest to wykonywane automatycznie jeśli instalujesz Yii używając Composer'a):
(jest to wykonywane automatycznie, jeśli instalujesz Yii używając Composera):
```php
// !!! wprowadź sekretny klucz tutaj - jest to wymagane przez walidację ciasteczek
// !!! wprowadź sekretny klucz tutaj - jest to wymagane do walidacji ciasteczek
'cookieValidationKey' => 'enter your secret key here',
```
Inne opcje instalacji <span id="other-installation-options"></span>
--------------------------
Powyższe instrukcje instalacji pokazują jak zainstalować Yii oraz utworzyć podstawową, działającą aplikację Web, która "działa po wyjęciu z pudełka".
To podejście jest dobrym punktem startowym dla większości projektów, małych bądź dużych. Jest to szczególnie korzystne gdy zaczynasz naukę Yii.
Powyższe instrukcje instalacji pokazują, jak zainstalować Yii oraz utworzyć podstawową, działającą aplikację Web, która "działa po wyjęciu z pudełka".
To podejście jest dobrym punktem startowym dla większości projektów, małych bądź dużych. Jest to szczególnie korzystne, gdy zaczynasz naukę Yii.
Jednak dostępne są również inne opcje instalacji:
Dostępne są również inne opcje instalacji:
* Jeśli chcesz zainstalować wyłącznie framework i sam budować aplikację od podstaw
* Jeśli chcesz utworzyć bardziej wyrafinowaną aplikację, lepiej nadającą się do zespołu programistycznego, powinienieś rozważyć instalację [zaawansowanego szablonu aplikacji](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/README.md).
* Jeśli chcesz utworzyć bardziej wyrafinowaną aplikację, lepiej nadającą się dla zespołu programistycznego, powinienieś rozważyć instalację
[zaawansowanego szablonu aplikacji](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/README.md).
Sprawdzenie instalacji <span id="verifying-installation"></span>
--------------------------
Po instalacji możesz użyć swojej przeglądarki aby uzyskać dostęp do swojej aplikacji Yii przechodząc pod adres:
Po instalacji możesz użyć swojej przeglądarki, aby uzyskać dostęp do swojej aplikacji Yii przechodząc pod adres:
```
http://localhost/basic/web/index.php
```
Adres zakłada, że zainstalowałeś Yii w katalogu o nazwie `basic`, bezpośrednio jako katalog głównego katalogu serwera, oraz, że serwer jest uruchomiony na Twojej lokalnej maszynie ('localhost').
Powyższy wpis zakłada, że zainstalowałeś Yii w katalogu o nazwie `basic`, bezpośrednio jako katalog głównego katalogu serwera, oraz że serwer jest uruchomiony na Twojej lokalnej
maszynie ('localhost').
Być może będziesz musiał dostosować go do Twojego środowiska instalacyjnego.
![Pomyślna instalacja Yii](../guide/images/start-app-installed.png)
Na stronie w przeglądarce powinienieś zobaczyć napis "Congratulations!". Jeśli nie, sprawdź czy zainstalowana wersja PHP jest wystarczająca do wymagań Yii.
Możesz sprawdzić minimalne wymagania na dwa sposoby:
@ -99,27 +106,34 @@ Możesz sprawdzić minimalne wymagania na dwa sposoby:
php requirements.php
```
Powinienieś skonfigurować swoją instalację PHP tak, aby spełniała minimalne wymogi Yii. Najważniejszym z nich jest posiadanie PHP w wersji 5.4 lub wyżej. Powinienieś również zainstalować
[rozszerzenie PDO](http://www.php.net/manual/en/pdo.installation.php) oraz odpowiedni sterownik bazy danych (np. `pdo_mysql` dla bazy danych MySQL), jeśli Twoja aplikacja potrzebuje bazy danych.
Powinienieś skonfigurować swoją instalację PHP tak, aby spełniała minimalne wymogi Yii. Najważniejszym z nich jest posiadanie PHP w wersji 5.4 lub wyższej. Powinienieś również
zainstalować [rozszerzenie PDO](http://www.php.net/manual/en/pdo.installation.php) oraz odpowiedni sterownik bazy danych (np. `pdo_mysql` dla bazy danych MySQL), jeśli Twoja aplikacja
potrzebuje bazy danych.
Konfigurowanie serwerów WWW <span id="configuring-web-servers"></span>
-----------------------
> Info: Możesz pominąć tą sekcję jeśli tylko testujesz Yii, bez zamiaru zamieszczania aplikacji na serwerze produkcyjnym.
> Info: Możesz pominąć tą sekcję, jeśli tylko testujesz Yii, bez zamiaru zamieszczania aplikacji na serwerze produkcyjnym.
Aplikacja zainstalowana według powyższych instrukcji powinna działać na [serwerze Apache HTTP](http://httpd.apache.org/) oraz [serwerze Nginx HTTP](http://nginx.org/), na systemie operacyjnym Windows, Mac OS X oraz Linux posiadających zainstalowany PHP 5.4 lub wyżej.
Yii 2.0 jest również kompatybilne z [facebook'owym HHVM](http://hhvm.com/). Są jednak przypadki, gdzie Yii zachowuje się inaczej w HHVM niż w natywnym PHP, dlatego powinieneś zachować szczególną ostrożność używając HHVM.
Aplikacja zainstalowana według powyższych instrukcji powinna działać na [serwerze Apache HTTP](http://httpd.apache.org/) oraz [serwerze Nginx HTTP](http://nginx.org/), na systemie
operacyjnym Windows, Mac OS X oraz Linux, posiadającym zainstalowane PHP 5.4 lub wyższe.
Yii 2.0 jest również kompatybilne z [facebook'owym HHVM](http://hhvm.com/). Są jednak przypadki, gdzie Yii zachowuje się inaczej w HHVM niż w natywnym PHP, dlatego powinieneś zachować
szczególną ostrożność używając HHVM.
Na serwerze produkcyjnym będziesz chciał skonfigurować swój serwer Web tak, aby aplikacja była dostępna pod adresem `http://www.example.com/index.php` zamiast `http://www.example.com/basic/web/index.php`.
Taka konfiguracja wymaga wskazania głównego katalogu serwera na katalog `basic/web`. Jeśli chcesz ukryć `index.php` z adresu URL skorzystaj z informacji opisanych w dziale [routing i tworzenie adresów URL](runtime-routing.md)
W tej sekcji dowiesz sie jak skonfigurować Twój serwer Apache lub Nginx aby osiągnąć te cele.
Na serwerze produkcyjnym będziesz chciał skonfigurować swój serwer Web tak, aby aplikacja była dostępna pod adresem `http://www.example.com/index.php` zamiast
`http://www.example.com/basic/web/index.php`.
Taka konfiguracja wymaga wskazania głównego katalogu serwera jako katalogu `basic/web`. Jeśli chcesz ukryć `index.php` w adresie URL, skorzystaj z informacji opisanych w dziale
[routing i tworzenie adresów URL](runtime-routing.md).
W tej sekcji dowiesz się, jak skonfigurować Twój serwer Apache lub Nginx, aby osiągnąć te cele.
> Info: Ustawiając `basic/web` jako główny katalog serwera zapobiegasz niechcianego dostępu użytkowników końcowych do prywatnego kodu oraz wrażliwych plików aplikacji, które są przechowywane w katalogu `basic`.
> Info: Ustawiając `basic/web` jako główny katalog serwera unikasz niechcianego dostępu użytkowników końcowych do prywatnego kodu oraz wrażliwych plików aplikacji, które są
przechowywane w katalogu `basic`.
Blokowanie dostępu do tych folderów jest dużą poprawą bezpieczeństwa.
> Info: W przypadku, gdy Twoja aplikacja działa na wspólnym środowisku hostingowym, gdzie nie masz dostępu do modyfikowania konfiguracji serwera, nadal możesz zmienić strukturę aplikacji dla lepszej ochrony.
Po więcej informacji zajrzyj do działu [wspólne środowisko hostingowe](tutorial-shared-hosting.md)
> Info: W przypadku, gdy Twoja aplikacja działa na wspólnym środowisku hostingowym, gdzie nie masz dostępu do modyfikowania konfiguracji serwera, nadal możesz zmienić strukturę
> aplikacji dla lepszej ochrony.
> Po więcej informacji zajrzyj do działu [wspólne środowisko hostingowe](tutorial-shared-hosting.md).
### Zalecane ustawienia Apache <span id="recommended-apache-configuration"></span>
@ -146,7 +160,8 @@ DocumentRoot "path/to/basic/web"
### Zalecane ustawienia Nginx <span id="recommended-nginx-configuration"></span>
Aby użyć [Nginx](http://wiki.nginx.org/) powinienieś zainstalować PHP jako [FPM SAPI](http://php.net/install.fpm).
Możesz użyć przedstawionej poniżej konfiguracji Nginx, zastępując jedynie ścieżkę `path/to/basic/web` na aktualną ścieżkę do `basic/web` Twojej aplikacji oraz `mysite.local` na aktualną nazwę hosta.
Możesz użyć przedstawionej poniżej konfiguracji Nginx, zastępując jedynie ścieżkę `path/to/basic/web` aktualną ścieżką do `basic/web` Twojej aplikacji oraz `mysite.local` aktualną
nazwą hosta.
```
server {
@ -188,6 +203,6 @@ server {
}
```
W przypadku użycia tej konfiguracji, powinienieś ustawić również `cgi.fix_pathinfo=0` w pliku `php.ini` aby zapobiec wielu zbędnych wywołań 'stat()'.
W przypadku użycia tej konfiguracji, powinienieś ustawić również `cgi.fix_pathinfo=0` w pliku `php.ini`, aby zapobiec wielu zbędnym wywołaniom 'stat()'.
Należy również pamiętać, że podczas pracy na serwerze HTTPS musisz dodać `fastcgi_param HTTPS on;` aby Yii prawidłowo wykrywało, że połączenie jest bezpieczne.
Należy również pamiętać, że podczas pracy na serwerze HTTPS musisz dodać `fastcgi_param HTTPS on;`, aby Yii prawidłowo wykrywało, że połączenie jest bezpieczne.

28
docs/guide-pl/start-looking-ahead.md

@ -1,25 +1,29 @@
Dalsze kroki
=============
Jeśli przebyłeś już cały dział "Pierwsze kroki" powinieneś mieć utworzoną kompletną aplikację Yii. Podczas tego procesu, nauczyłeś się jak zaimplementować powszechnie niezbędne funkcjonalności, takie jak
zbieranie danych od użytkownika wykorzystując formularz HTML, odczytywanie danych z bazy danych oraz wyświetlanie ich wraz ze stronicowaniem.
Nauczyłeś się również jak korzystać z [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-pl/README.md) i generować kod automatycznie. Używanie Gii do zmienia proces rozwoju Twojej aplikacji w tak proste zadanie, jak uzupełnienie formularza.
Jeśli przebyłeś już cały dział "Pierwsze kroki", powinieneś mieć utworzoną kompletną aplikację Yii. Podczas tego procesu, nauczyłeś się jak zaimplementować zwykle niezbędne
funkcjonalności, takie jak zbieranie danych od użytkownika wykorzystując formularz HTML, odczytywanie danych z bazy danych oraz wyświetlanie ich wraz ze stronicowaniem.
Nauczyłeś się również jak korzystać z [Gii](https://github.com/yiisoft/yii2-gii/blob/master/docs/guide-pl/README.md) i generować kod automatycznie. Używanie Gii zmienia proces
rozwoju Twojej aplikacji w tak proste zadanie, jak uzupełnienie formularza.
Ta sekcja podsumuje dostępne zasoby Yii, które pomogą Ci być bardziej produktywnym podczas używania framework'a.
Ta sekcja podsumuje dostępne zasoby Yii, które pomogą Ci być bardziej produktywnym podczas używania frameworka.
* Dokumentacja
- [Przewodnik po Yii](http://www.yiiframework.com/doc-2.0/guide-README.html):
Jak sama nazwa wskazuje, jest to przewodnik, który opisuje jak działa Yii oraz dostarcza generalnych porad o użyciu Yii.
Jest jednym z najważniejszych poradników, które powinieneś przeczytać przed napisaniem kodu w Yii.
Jak sama nazwa wskazuje, jest to przewodnik, który opisuje jak działa Yii oraz dostarcza generalnych porad o użyciu Yii.
Jest jednym z najważniejszych poradników, które powinieneś przeczytać przed napisaniem kodu w Yii.
- [Dokumentacja klas](http://www.yiiframework.com/doc-2.0/index.html):
Określa korzystanie z każdej klasy dostarczonej przez Yii. Powinna być stosowana głównie przy pisaniu kodu oraz chęci zrozumienia jak działa poszczególna klasa, metoda lub właściwość.
Najlepiej używać jej po zrozumieniu działania całego framework'a.
Określa korzystanie z każdej klasy dostarczonej przez Yii. Powinna być stosowana głównie przy pisaniu kodu oraz chęci zrozumienia, jak działa poszczególna klasa, metoda lub
właściwość.
Najlepiej używać jej po zrozumieniu działania całego frameworka.
- [Artykuły Wiki](http://www.yiiframework.com/wiki/?tag=yii2):
Artykuły w Wiki są pisane przez użytkowników Yii i są oparte na ich doświadczeniu. Większość z nich jest pisana w stylu przepisów kucharskich, pokazują jak rozwiązać poszczególne problemy używając Yii.
Chociaż jakość tych artykułów może nie być tak dobra jak przewodnik, są one bardzo użyteczne oraz mogą dostarczać gotowych do użycia rozwiązań.
Artykuły w Wiki są pisane przez użytkowników Yii i są oparte na ich doświadczeniu. Większość z nich jest pisana w stylu przepisów kucharskich, pokazując jak rozwiązać poszczególne
problemy używając Yii.
Chociaż jakość tych artykułów może nie być tak dobra jak przewodnik, są one bardzo użyteczne oraz mogą dostarczać gotowych do użycia rozwiązań.
- [Książki](http://www.yiiframework.com/doc/)
* [Rozszerzenia](http://www.yiiframework.com/extensions/):
Yii chwali się biblioteką tysięcy rozszerzeń użytkowników, które mogą być łatwo zainstalowane w Twojej aplikacji, co czyni tworzenie Twojej aplikacji jeszcze prostszym i szybszym.
Yii może pochwalić się biblioteką tysięcy rozszerzeń użytkowników, które mogą być łatwo zainstalowane w Twojej aplikacji, dzięki czemu tworzenie Twojej aplikacji jest jeszcze prostsze
i szybsze.
* Społeczność
- Forum: <http://www.yiiframework.com/forum/>
- IRC chat: Kanał #yii w sieci freenode (<irc://irc.freenode.net/yii>)
@ -27,4 +31,4 @@ Ta sekcja podsumuje dostępne zasoby Yii, które pomogą Ci być bardziej produk
- Facebook: <https://www.facebook.com/groups/yiitalk/>
- Twitter: <https://twitter.com/yiiframework>
- LinkedIn: <https://www.linkedin.com/groups/yii-framework-1483367>
- Stackoverflow: <http://stackoverflow.com/questions/tagged/yii2>
- StackOverflow: <http://stackoverflow.com/questions/tagged/yii2>

22
docs/guide-pl/start-workflow.md

@ -4,10 +4,12 @@ Uruchamianie aplikacji
Po zainstalowaniu Yii posiadasz działającą aplikację Yii dostępną pod adresem `http://hostname/basic/web/index.php` lub `http://hostname/index.php`, zależnie od Twojej konfiguracji.
Ta sekcja wprowadzi Cię do wbudowanych funkcjonalności aplikacji, pokaże jak zorganizowany jest jej kod oraz jak aplikacja obsługuje żądania.
> Info: Dla uproszczenia, zakładamy, że ustawiłeś główny katalog serwera na `basic/web`, według poradnika "Instalacja Yii", oraz skonfigurowałeś adres URL tak, aby Twoja aplikacja była dostępna pod adresem `http://hostname/index.php`.
Dla Twoich potrzeb dostosuj odpowiednio adres URL w naszych opisach.
> Info: Dla uproszczenia zakładamy, że ustawiłeś główny katalog serwera na `basic/web`, według poradnika "Instalacja Yii", oraz skonfigurowałeś adres URL tak, aby Twoja aplikacja była
> dostępna pod adresem `http://hostname/index.php`.
> Dla Twoich potrzeb dostosuj odpowiednio adres URL w naszych opisach.
Należy pamiętać, że w przeciwieństwie do samego framework'a, po zainstalowaniu szablonu projektu jest on cały Twój. Możesz dowolnie dodawać, modyfikować lub usuwać kod, zależnie od Twoich potrzeb.
Należy pamiętać, że w przeciwieństwie do samego frameworka, po zainstalowaniu szablonu projektu należy on w całości do Ciebie. Możesz dowolnie dodawać, modyfikować lub usuwać kod,
zależnie od Twoich potrzeb.
Funkcjonalność <span id="functionality"></span>
-------------
@ -17,12 +19,14 @@ Zainstalowana podstawowa aplikacja posiada cztery strony:
* stronę główną, która jest wyświetlana przy wywołaniu adresu `http://hostname/index.php`,
* strona informacyjna `About`,
* strona kontaktowa `Contact`, gdzie wyświetlany jest formularz kontaktowy, pozwalający użytkownikowi skontaktować się z Tobą przez email,
* strona logowania `Login`, gdzie wyświetlany jest formularz logowania, który może być użyty do uwierzytelniania użytkowników. Zaloguj się danymi "admin/admin", przez co pozycja `Login` z menu zamieni się na `Logout`.
* strona logowania `Login`, gdzie wyświetlany jest formularz logowania, który może być użyty do uwierzytelniania użytkowników. Zaloguj się danymi "admin/admin", przez co pozycja
`Login` z menu zamieni się na `Logout`.
Wszystkie te strony posiadają wspólne nagłówek i stopkę. Nagłówek zawiera główne menu pozwalające na nawigację po innych stronach.
Powinieneś również widzieć pasek narzędzi na dole okna przeglądarki.
Jest to użyteczne [narzędzie do debugowania](https://github.com/yiisoft/yii2-debug/blob/master/docs/guide/README.md) dostarczone przez Yii zapisujące i wyświetlające wiele informacji, takich jak wiadomości logów, statusy odpowiedzi, zapytania do baz danych i wiele innych.
Jest to użyteczne [narzędzie do debugowania](https://github.com/yiisoft/yii2-debug/blob/master/docs/guide/README.md) dostarczone przez Yii, zapisujące i wyświetlające wiele informacji,
takich jak wiadomości logów, statusy odpowiedzi, zapytania do baz danych i wiele innych.
Dodatkowo do aplikacji Web dostarczono skrypt konsolowy nazwany `yii`, który jest ulokowany w głównym katalogu aplikacji.
Skrypt może być użyty do uruchomienia w tle zadań dla aplikacji, które są opisane w sekcji [Komendy konsolowe](tutorial-console.md).
@ -53,8 +57,10 @@ basic/ bazowa ścieżka aplikacji
Ogólnie pliki aplikacji mogą zostać podzielone na dwa typy: pliki w katalogu `basic/web` oraz pliki w innych katalogach.
Dostęp do pierwszego typu można uzyskać przez HTTP (np. przez przeglądarkę), podczas gdy reszta nie może, i nie powinna być, dostępna publicznie.
Yii implementuje wzór architektoniczny [model-widok-kontroler (MVC)](http://wikipedia.org/wiki/Model-view-controller), który jest odzwierciedleniem przedstawionej wyżej organizacji katalogów.
Katalog `models` zawiera wszystkie [klasy modeli](structure-models.md), katalog `views` zawiera wszystkie [skrypty widoków](structure-views.md), oraz katalog `controllers` zawiera wszystkie [klasy kontrolerów](structure-controllers.md).
Yii implementuje wzór architektoniczny [model-widok-kontroler (MVC)](http://wikipedia.org/wiki/Model-view-controller), który jest odzwierciedleniem przedstawionej wyżej organizacji
katalogów.
Katalog `models` zawiera wszystkie [klasy modeli](structure-models.md), katalog `views` zawiera wszystkie [skrypty widoków](structure-views.md) oraz katalog `controllers` zawiera
wszystkie [klasy kontrolerów](structure-controllers.md).
Poniższy schemat pokazuje statyczną strukturę aplikacji.
@ -63,7 +69,7 @@ Poniższy schemat pokazuje statyczną strukturę aplikacji.
Każda aplikacja zawiera skrypt wejściowy `web/index.php`, który jest jedynym publicznie dostępnym skryptem PHP w aplikacji.
Skrypt wejściowy pobiera przychodzące żądanie i tworzy instancję [aplikacji](structure-applications.md) do przetworzenia tego żądania.
[Aplikacja](structure-applications.md) obsługuje żądanie z pomocą [komponentów](concept-components.md), po czym wysyła żądanie do elementów MVC.
[Widżety](structure-widgets.md) są używane w [widokach](structure-views.md) aby pomóc zbudować złożone i dynamiczne elementy interfejsu użytkownika.
[Widżety](structure-widgets.md) są używane w [widokach](structure-views.md), aby pomóc zbudować złożone i dynamiczne elementy interfejsu użytkownika.

56
docs/guide-pl/structure-application-components.md

@ -14,12 +14,13 @@ Możesz dostać się do tego komponentu przez wyrażenie:
\Yii::$app->componentID
```
Dla przykładu, możesz użyć `\Yii::$app->db` do uzyskania [[yii\db\Connection|DB connection]],
lub `\Yii::$app->cache` do uzyskania [[yii\caching\Cache|podstawowej pamięci podręcznej]] zarejestrowanej w aplikacji.
Dla przykładu, możesz użyć `\Yii::$app->db` do uzyskania [[yii\db\Connection|połączenia z bazą danych]] lub `\Yii::$app->cache` do uzyskania
[[yii\caching\Cache|dostępu do pamięci podręcznej]] zarejestrowanej w aplikacji.
Komponent jest tworzony przy pierwszym jego wywołaniu przez powyższe wyrażenie, każde kolejne wywołanie zwróci tą samą instancję tego komponentu.
Komponentami aplikacji może być każdy objekt. Możesz je zarejestrować przez skonfigurowanie parametru [[yii\base\Application::components]] w [konfiguracji aplikacji](structure-applications.md#application-configurations).
Komponentami aplikacji może być każdy objekt. Możesz je zarejestrować przez skonfigurowanie parametru [[yii\base\Application::components|components]] w
[konfiguracji aplikacji](structure-applications.md#application-configurations).
Dla przykładu:
```php
@ -45,16 +46,16 @@ Dla przykładu:
```
> Info: Możesz zarejestrować tak wiele komponentów jak chcesz, jednak powinieneś robić to rozważnie.
Komponenty aplikacji są podobne do zmiennych globalnych.
Używanie zbyt wielu komponentów może potencjalnie uczynić Twój kod trudniejszym do testowania i utrzymania.
W wielu przypadkach, możesz po prostu utworzyć lokalny komponent i użyć go kiedy potrzebujesz.
> Komponenty aplikacji są podobne do zmiennych globalnych.
> Używanie zbyt wielu komponentów może potencjalnie uczynić Twój kod trudniejszym do testowania i utrzymania.
> W wielu przypadkach możesz po prostu utworzyć lokalny komponent i użyć go, kiedy jest to konieczne.
## Bootstrapping komponentów <span id="bootstrapping-components"></span>
Tak jak było wspomniane wcześniej, komponent aplikacji zostanie zinstancjowany tylko jeśli zostanie wywołany po raz pierwszy.
Czasami jednak chcemy aby komponent został zainstancjowany dla każdego żądania, nawet jeśli nie jest bezpośrednio wywoływany.
Aby to osiągnąć, możesz wylistować ID komponentów w właściwości [[yii\base\Application::bootstrap|bootstrap]] aplikacji.
Tak, jak było wspomniane wcześniej, komponent aplikacji zostanie zinstancjowany tylko w momencie pierwszego wywołania.
Czasami jednak chcemy, aby komponent został zainstancjowany dla każdego żądania, nawet jeśli nie jest bezpośrednio wywoływany.
Aby to osiągnąć, możesz wylistować ID komponentów we właściwości [[yii\base\Application::bootstrap|bootstrap]] aplikacji.
Dla przykładu, następująca konfiguracja aplikacji zapewnia załadowanie komponentu `log` przy każdym żądaniu:
@ -86,32 +87,31 @@ tak jak z normalnymi komponentami. Podczas konfigurowania podstawowych komponent
zostanie użyta klasa domyślna.
* [[yii\web\AssetManager|assetManager]]: zarządzanie zasobami oraz ich publikacja.
Po więcej informacji zajrzyj do sekcji [Assets](structure-assets.md).
* [[yii\db\Connection|db]]: reprezentuje połączenie z bazą danych, dzięki której możliwe jest wykonywanie zapytań do bazy.
Konfigurując ten komponent musisz określić klasę komponentu, tak samo jak inne wymagane właściwości, np. [[yii\db\Connection::dsn]].
Po więcej informacji zajrzyj do sekcji [Obiekty dostępu do danych (DAO)](db-dao.md).
Po więcej informacji zajrzyj do sekcji [Assets](structure-assets.md).
* [[yii\db\Connection|db]]: reprezentuje połączenie z bazą danych, dzięki której możliwe jest wykonywanie zapytań.
Konfigurując ten komponent musisz określić klasę komponentu, tak samo jak inne wymagane właściwości, np. [[yii\db\Connection::dsn|dsn]].
Po więcej informacji zajrzyj do sekcji [Obiekty dostępu do danych (DAO)](db-dao.md).
* [[yii\base\Application::errorHandler|errorHandler]]: obsługuje błędy oraz wyjątki PHP.
Po więcej informacji zajrzyj do sekcji [Obsługa błędów](runtime-handling-errors.md).
* [[yii\i18n\Formatter|formatter]]: formatuje dane kiedy są wyświetlane użytkownikom. Dla przykładu,
liczba może zostać wyświetlona z separatorem tysięcy.
Po więcej informacji zajrzyj do sekcji [Formatowanie danych](output-formatting.md).
Po więcej informacji zajrzyj do sekcji [Obsługa błędów](runtime-handling-errors.md).
* [[yii\i18n\Formatter|formatter]]: formatuje dane wyświetlane użytkownikom. Dla przykładu liczba może zostać wyświetlona z separatorem tysięcy.
Po więcej informacji zajrzyj do sekcji [Formatowanie danych](output-formatting.md).
* [[yii\i18n\I18N|i18n]]: wspiera tłumaczenie i formatowanie wiadomości.
Po więcej informacji zajrzyj do sekcji [Internacjonalizacja](tutorial-i18n.md).
Po więcej informacji zajrzyj do sekcji [Internacjonalizacja](tutorial-i18n.md).
* [[yii\log\Dispatcher|log]]: zarządza logowaniem informacji oraz błędów
Po więcej informacji zajrzyj do sekcji [Logowanie](runtime-logging.md).
Po więcej informacji zajrzyj do sekcji [Logowanie](runtime-logging.md).
* [[yii\swiftmailer\Mailer|mail]]: wspiera tworzenie oraz wysyłanie emaili.
Po więcej informacji zajrzyj do sekcji [Wysyłanie poczty](tutorial-mailing.md).
Po więcej informacji zajrzyj do sekcji [Wysyłanie poczty](tutorial-mailing.md).
* [[yii\base\Application::response|response]]: reprezentuje odpowiedź wysyłaną do użytkowników.
Po więcej informacji zajrzyj do sekcji [Odpowiedzi](runtime-responses.md).
Po więcej informacji zajrzyj do sekcji [Odpowiedzi](runtime-responses.md).
* [[yii\base\Application::request|request]]: reprezentuje żądanie otrzymane od użytkownika.
Po więcej informacji zajrzyj do sekcji [Żądania](runtime-requests.md).
Po więcej informacji zajrzyj do sekcji [Żądania](runtime-requests.md).
* [[yii\web\Session|session]]: reprezentuje informacje przetrzymywane w sesji. Ten komponent jest dostępny
tylko w [[yii\web\Application|aplikacjach WEB]].
Po więcej informacji zajrzyj do sekcji [Sesje i ciasteczka](runtime-sessions-cookies.md).
tylko w [[yii\web\Application|aplikacjach WEB]].
Po więcej informacji zajrzyj do sekcji [Sesje i ciasteczka](runtime-sessions-cookies.md).
* [[yii\web\UrlManager|urlManager]]: wspiera przetwarzania oraz tworzenie adresów URL.
Po więcej informacji zajrzyj do sekcji [Przetwarzanie i tworzenie adresów URL](runtime-routing.md)
Po więcej informacji zajrzyj do sekcji [Przetwarzanie i tworzenie adresów URL](runtime-routing.md)
* [[yii\web\User|user]]: reprezentuje informacje dotyczące uwierzytelniania użytkownika. Ten komponent jest dostępny
tylko w [[yii\web\Application|aplikacjach WEB]].
Po więcej informacji zajrzyj do sekcji [Uwierzytelnianie](security-authentication.md).
tylko w [[yii\web\Application|aplikacjach WEB]].
Po więcej informacji zajrzyj do sekcji [Uwierzytelnianie](security-authentication.md).
* [[yii\web\View|view]]: wspiera renderowanie widoków.
Po więcej informacji zajrzyj do sekcji [Widoki](structure-views.md).
Po więcej informacji zajrzyj do sekcji [Widoki](structure-views.md).

4
docs/guide-pl/structure-entry-scripts.md

@ -1,7 +1,7 @@
Skrypty wejściowe
=================
Skrypty wejściowe są pierwszym krokiem procesu bootstrapowania aplikacji. Aplikacja (zarówno web
Skrypty wejściowe są pierwszym krokiem procesu bootstrapowania aplikacji. Aplikacja (zarówno Web
jak i konsolowa) posiada pojedynczy skrypt wejściowy. Użytkownicy końcowi wysyłają żądania do skryptów
wejściowych, które inicjują instancje aplikacji i przekazują do nich te żądania.
@ -48,7 +48,7 @@ $config = require(__DIR__ . '/../config/web.php');
## Aplikacje konsoli <span id="console-applications"></span>
Podobnie, poniżej kod skryptu wejściowego dla aplikacji konsolowej:
Podobnie poniżej kod skryptu wejściowego dla aplikacji konsolowej:
```php
#!/usr/bin/env php

2
docs/guide-pl/structure-overview.md

@ -20,4 +20,4 @@ Oprócz MVC, w aplikacjach Yii zdefiniowane są następujące struktury:
Poniższy diagram ilustruje statyczną strukturę aplikacji:
![Statyczna struktura aplikacji](images/application-structure.png)
![Statyczna struktura aplikacji](../guide/images/application-structure.png)

2
docs/guide-pl/test-acceptance.md

@ -3,7 +3,7 @@ Testy akceptacyjne
> Uwaga: Ta sekcja jest w trakcie tworzenia.
- [Codeception Acceptance Tests](http://codeception.com/docs/03-AcceptanceTests)
- [Testy akceptacyjne Codeception](http://codeception.com/docs/03-AcceptanceTests)
Uruchamianie testów akceptacyjnych dla podstawowego i zaawansowanego szablonu projektu
--------------------------------------------------------------------------------------

8
docs/guide-pl/test-environment-setup.md

@ -42,7 +42,7 @@ Changed current directory to <directory>
Następnie dodaj `<directory>/vendor/bin` do zmiennej systemowej `PATH`. Od tej pory będziesz mógł użyć `codecept` z linii komend globalnie.
> Uwaga: instalacja globalna Codeception pozwala na użycie go we wszystkich projektach na komputerze deweloperskim oraz na wykonywanie
komendy `codecept` globalnie bez konieczności wskazywania ścieżki. Taka instalacja może jednak nie być pożądana, kiedy, dla przykładu,
dwa różne projekty wymagają różnych wersji Codeception.
Dla uproszczenia wszystkie komendy powłoki odnoszące się do uruchamiania testów użyte w tym przewodniku są napisane przy założeniu, że Codeception
został zainstalowany globalnie.
> komendy `codecept` globalnie bez konieczności wskazywania ścieżki. Taka instalacja może jednak nie być pożądana, kiedy, dla przykładu,
> dwa różne projekty wymagają różnych wersji Codeception.
> Dla uproszczenia wszystkie komendy powłoki odnoszące się do uruchamiania testów użyte w tym przewodniku są napisane przy założeniu, że Codeception
> został zainstalowany globalnie.

2
docs/guide-pl/test-functional.md

@ -3,7 +3,7 @@ Testy funkcjonalne
> Uwaga: Ta sekcja jest w trakcie tworzenia.
- [Codeception Functional Tests](http://codeception.com/docs/04-FunctionalTests)
- [Testy funkcjonalne Codeception](http://codeception.com/docs/04-FunctionalTests)
Uruchamianie testów funkcjonalnych dla podstawowego i zaawansowanego szablonu projektu
--------------------------------------------------------------------------------------

20
docs/guide-pl/tutorial-mailing.md

@ -59,7 +59,7 @@ $message->setTo(Yii::$app->params['adminEmail'])
```
> Note: każde rozszerzenie mailingowe posiada dwie główne klasy: 'Mailer' oraz 'Message'. Klasa 'Mailer' zawsze posiada nazwę klasy 'Message'.
Nie próbuj instancjować obiektu 'Message' bezpośrednio - zawsze używaj do tego metody `compose()`.
> Nie próbuj instancjować obiektu 'Message' bezpośrednio - zawsze używaj do tego metody `compose()`.
Możesz również wysłać wiele wiadomości na raz:
@ -129,7 +129,8 @@ Yii::$app->mailer->compose([
Jeśli określisz nazwę widoku jako ciąg skalarny, to wynik jego renderowania zostanie użyty jako ciało HTML wiadomości,
podczas gdy przy użyciu zwykłego teksu zostanie ono utworzone przez usunięcie wszystkich encji HTML z tego widoku.
Wynik renderowania widoku może zostać opakowany w szablon. Szablon możesz ustawić przez właściwość [[yii\mail\BaseMailer::htmlLayout]] lub [[yii\mail\BaseMailer::textLayout]].
Wynik renderowania widoku może zostać opakowany w szablon. Szablon możesz ustawić przez właściwość [[yii\mail\BaseMailer::htmlLayout|htmlLayout]] lub
[[yii\mail\BaseMailer::textLayout|textLayout]].
Zadziała to w identyczny sposób co w standardowej aplikacji web.
Szalony mogą zostać użyte do ustawienia styli CSS, lub innej wspólnej treści:
@ -204,21 +205,22 @@ Testowanie i debugowanie
---------------------
Deweloperzy często muszą sprawdzić, czy emaile zostały wysłane przez aplikację lub jaka była ich treść.
Możesz tego dokonać w łatwy sposób, używając dostarczonej przez Yii funkcjonalności, którą aktywujesz przez parametr `yii\mail\BaseMailer::useFileTransport`.
Możesz tego dokonać w łatwy sposób, używając dostarczonej przez Yii funkcjonalności, którą aktywujesz przez parametr [[yii\mail\BaseMailer::useFileTransport|useFileTransport]].
Jeśli zostanie aktywowana, każda wiadomość email będzie zapisywana do lokalnych plików zamiast zostać wysłana. Wszystkie pliki będą zapisane w ścieżce podanej w
`yii\mail\BaseMailer::fileTransportPath`, która domyślnie ustawiona jest na '@runtime/mail'.
[[yii\mail\BaseMailer::fileTransportPath|fileTransportPath]], która domyślnie ustawiona jest na '@runtime/mail'.
> Note: możesz albo zapisywać wiadomości do plików, albo wysyłać je do odbiorców, nie można wykonać tych dwóch czynności na raz.
Plik z wiadomością email może zostać otwarty przez standardowy edytor tekstu, dzięki czemu będziesz mógł przeglądać nagłówki oraz treść wiadomości.
> Note: plik wiadomości jest tworzony przy użyciu metody `\yii\mail\MessageInterface::toString()`, więc jest zależny od aktualnie używanego rozszerzenia mailingowego w Twojej aplikacji.
> Note: plik wiadomości jest tworzony przy użyciu metody [[yii\mail\MessageInterface::toString()|toString()]], więc jest zależny od aktualnie używanego rozszerzenia mailingowego w
> Twojej aplikacji.
Tworzenie własnego rozwiązania mailingowego
-------------------------------
Aby utworzyć swoje własne rozwiązanie mailingowe, musisz utworzyć 2 klasy: 'Mailer' oraz 'Message'.
Możesz rozszerzyć klasy `yii\mail\BaseMailer` i `yii\mail\BaseMessage` jako bazowe klasy do tego rozwiązania.
Aby utworzyć swoje własne rozwiązanie mailingowe, musisz utworzyć dwie klasy: 'Mailer' oraz 'Message'.
Możesz rozszerzyć klasy [[yii\mail\BaseMailer|BaseMailer]] i [[yii\mail\BaseMessage|BaseMessage]] jako bazowe klasy do tego rozwiązania.
Zawierają one podstawową logikę mechanizmu mailingu, który został opisany w tej sekcji.
Oczywiście ich użycie nie jest obowiązkowe, wystarczy zaimplementowanie interfejsów `yii\mail\MailerInterface` oraz `yii\mail\MessageInterface`.
Kolejnie musisz zaimplementować wszystkie abstrakcyjne metody do swoich klas.
Oczywiście ich użycie nie jest obowiązkowe, wystarczy zaimplementowanie interfejsów [[yii\mail\MailerInterface|MailerInterface]] oraz [[yii\mail\MessageInterface|MessageInterface]].
Następnie musisz zaimplementować wszystkie abstrakcyjne metody do swoich klas.

9
docs/guide-pl/tutorial-start-from-scratch.md

@ -26,9 +26,9 @@ Po zakończeniu pobierania plików repozytorium, można skasować folder `.git`
Modyfikacja plików
------------------
Następnie należy zmodyfikować plik `composer.json`, aby opisywał nasz szablon. Zmień wartości `name` (nazwa), `description` (opis), `keywords` (słowa kluczowe), `homepage` (strona domowa),
`license` (licencja), i `support` (wsparcie) na takie, które odpowiadają nowemu szablonowi. Zmodyfikuj również `require`, `require-dev`, `suggest` i wszelkie inne opcje zgodnie
z wymaganiami.
Następnie należy zmodyfikować plik `composer.json`, aby opisywał nasz szablon. Zmień wartości `name` (nazwa), `description` (opis), `keywords` (słowa kluczowe), `homepage`
(strona domowa), `license` (licencja), i `support` (wsparcie) na takie, które odpowiadają nowemu szablonowi. Zmodyfikuj również `require`, `require-dev`, `suggest` i wszelkie inne opcje
zgodnie z wymaganiami.
> Note: W pliku `composer.json` użyj parametru `writable` znajdującego się w elemencie `extra`, aby określić
> uprawnienia dla plików, które zostaną ustawione po utworzeniu aplikacji na podstawie szablonu.
@ -43,7 +43,8 @@ Nowy szablon umieść w odpowiadającym mu repozytorium Git. Jeśli zamierzasz u
Jeśli jednak nie przewidujesz współpracy z innymi nad swoim szablonem, dowolne repozytorium Git będzie odpowiednie.
Następnie należy zarejestrować swoją paczkę dla Composera. Dla publicznie dostępnych szablonów paczkę należy zarejestrować w serwisie [Packagist](https://packagist.org/).
Z prywatnymi szablonami sprawa jest trochę bardziej skomplikowana - instrukcję, jak to zrobić, znajdziesz w [dokumentacji Composera](https://getcomposer.org/doc/05-repositories.md#hosting-your-own).
Z prywatnymi szablonami sprawa jest trochę bardziej skomplikowana - instrukcję, jak to zrobić, znajdziesz w
[dokumentacji Composera](https://getcomposer.org/doc/05-repositories.md#hosting-your-own).
Użycie szablonu
---------------

Loading…
Cancel
Save