diff --git a/docs/guide-pl/caching-page.md b/docs/guide-pl/caching-page.md index f169a51..7de78b4 100644 --- a/docs/guide-pl/caching-page.md +++ b/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 diff --git a/docs/guide-pl/concept-components.md b/docs/guide-pl/concept-components.md index 304cf54..9c313a5 100644 --- a/docs/guide-pl/concept-components.md +++ b/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. diff --git a/docs/guide-pl/db-active-record.md b/docs/guide-pl/db-active-record.md index 54cab18..9de9ef0 100644 --- a/docs/guide-pl/db-active-record.md +++ b/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 -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 -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()]]. @@ -427,7 +427,8 @@ Jeśli chcesz sprawdzić wartość atrybutu sprzed ostatniej zmiany, możesz wyw > ma tą samą wartość, ale jest innego typu. Taka sytuacja zdarza się często, kiedy model jest aktualizowany danymi pochodzącymi z formularza > HTML, gdzie każda wartość jest reprezentowana jako string. > Aby upewnić się, że wartości będą odpowiednich typów, np. integer, możesz zaaplikować [filtr walidacji](input-validation.md#data-filtering): -> `['attributeName', 'filter', 'filter' => 'intval']`. +> `['attributeName', 'filter', 'filter' => 'intval']`. Działa on z wszystkimi funkcjami PHP rzutującymi typy jak [intval()](http://php.net/manual/en/function.intval.php), +> [floatval()](http://php.net/manual/en/function.floatval.php), [boolval](http://php.net/manual/en/function.boolval.php), itp... ### Domyślne wartości atrybutów @@ -464,14 +465,14 @@ Customer::updateAllCounters(['age' => 1]); ## Usuwanie danych 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 +514,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 +530,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 @@ -571,7 +572,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 +590,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 +609,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 +738,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 +750,7 @@ sytuacji, należy najpierw usunąć z pamięci właściwość relacyjną poprzez ### Dynamiczne kwerendy relacyjne -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 +895,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 +947,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 +985,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 +1016,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 +1033,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 +1222,8 @@ Możesz używać większości funkcjonalności dostępnych dla relacyjnych kwere ## Niestandardowe klasy kwerend -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; diff --git a/docs/guide-pl/glossary.md b/docs/guide-pl/glossary.md index 4d87ffe..c13765d 100644 --- a/docs/guide-pl/glossary.md +++ b/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 diff --git a/docs/guide-pl/helper-overview.md b/docs/guide-pl/helper-overview.md index d871adc..294ce23 100644 --- a/docs/guide-pl/helper-overview.md +++ b/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 ---------------------------------------------------- -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 @@ -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 @@ -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 -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; ``` -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; diff --git a/docs/guide-pl/input-forms.md b/docs/guide-pl/input-forms.md index 15792b0..aa67440 100644 --- a/docs/guide-pl/input-forms.md +++ b/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([ ``` -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 `
`. -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 ``. +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 ``. -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 field($model, 'email')->input('email') ?> ``` -Powyższy kod utworzy tagi `