From 24b919cb5bd3f2d2430fe6a42499ea184a3bbce1 Mon Sep 17 00:00:00 2001 From: halfling-rram Date: Mon, 18 May 2015 15:15:42 +0600 Subject: [PATCH 01/12] translate guide-ru helper-url --- docs/guide-ru/helper-url.md | 177 ++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 docs/guide-ru/helper-url.md diff --git a/docs/guide-ru/helper-url.md b/docs/guide-ru/helper-url.md new file mode 100644 index 0000000000..a21019f52f --- /dev/null +++ b/docs/guide-ru/helper-url.md @@ -0,0 +1,177 @@ +Url хелпер +========== + +Url хелпер предоставляет набор статических методов для управления урлами. + + +## Получение общих урлов + +Вы можете использовать два метода получения общих урлов: домашний Урл (Home) и базовый Урл (Base) текущего запроса. +Используйте следующий код, чтобы получить домашний Урл: + +```php +$relativeHomeUrl = Url::home(); +$absoluteHomeUrl = Url::home(true); +$httpsAbsoluteHomeUrl = Url::home('https'); +``` + +Если вы не передали параметров, то получите относительный урл. Вы можете передать `true`, чтобы получить абсолютный урл +для текущего протокола или явно указать протокол (`https`, `http`). + +Чтобы получить базовый Урл текущего запроса: + +```php +$relativeBaseUrl = Url::base(); +$absoluteBaseUrl = Url::base(true); +$httpsAbsoluteBaseUrl = Url::base('https'); +``` + +Единственный параметр данного метода работает также как и `Url::home()`. + +## Создание Урлов + +Чтобы создать урл для соответствующего роута используйте метод `Url::toRoute()`. Метод использует [[\yii\web\UrlManager]]. +Для того чтобы создать урл: + +```php +$url = Url::toRoute(['product/view', 'id' => 42]); +``` + +Вы можете задать роут строкой, например, `site/index`. А также вы можете использовать массив, если хотите задать +дополнительные параметры запроса для урла. Формат массива должен быть следующим: + +```php +// сгенерирует: /index.php?r=site/index¶m1=value1¶m2=value2 +['site/index', 'param1' => 'value1', 'param2' => 'value2'] +``` + +Если вы хотите создать урл с якорем, то вы можете использовать параметр массива с ключом `#`. Например: + +```php +// сгенерирует: /index.php?r=site/index¶m1=value1#name +['site/index', 'param1' => 'value1', '#' => 'name'] +``` + +Роут может быть и абсолютным, и относительным. Абсолютный урл начинается со слеша (например, `/site/index`), +относительный - без (например, `site/index` or `index`). Относительный урл будет сконвертирован в абсолютный по следующим +правилам: + +- Если роут пустая строка, то будет использовано текущее значение [[\yii\web\Controller::route|route]]; +- Если роут не содержит слешей (например, `index`), то он будет считаться экшеном текущего контролера и будет определен + с помощью [[\yii\web\Controller::uniqueId]]; +- Если роут начинается не со слеша (например, `site/index`), то он будет считаться относительным роутом текущего модуля + и будет определен с помощью [[\yii\base\Module::uniqueId|uniqueId]]. + +Начиная с версии 2.0.2, вы можете задавать роуты с помощью [псевдонимов](concept-aliases.md). В этом случае, сначала +псевдоним будет сконвертирован в соответсвующий роут, который будет преобразован в абсолютный в соответсвии с вышеописанными +правилами. + +Примеры использования метода: + +```php +// /index.php?r=site/index +echo Url::toRoute('site/index'); + +// /index.php?r=site/index&src=ref1#name +echo Url::toRoute(['site/index', 'src' => 'ref1', '#' => 'name']); + +// /index.php?r=post/edit&id=100 псевдоним "@postEdit" задан как "post/edit" +echo Url::toRoute(['@postEdit', 'id' => 100]); + +// http://www.example.com/index.php?r=site/index +echo Url::toRoute('site/index', true); + +// https://www.example.com/index.php?r=site/index +echo Url::toRoute('site/index', 'https'); +``` + +Другой метод `Url::to()` очень похож на [[toRoute()]]. Единственное отличие: входным параметром должен быть массив. +Если будет передана строка, то она будет воспринята как урл. + +Первый аргумент может быть: + +- массивом: будет вызван [[toRoute()]], чтобы сгенерировать урл. Например: `['site/index']`, `['post/index', 'page' => 2]`. + В разделе [[toRoute()]] подробно описано как задавать роут; +- Строка, начинающася с `@`, будет обработана как псевдоним. Будет возвращено соответствующее значение псевдонима; +- Пустая строка: вернет текущий урл; +- Обычная строка: вернет строку без имзенений + +Когда у метода задан второй параметр `$scheme` (строка или true), то сгенерированный урл будет с протоколом +(полученным из [[\yii\web\UrlManager::hostInfo]]). Если в `$url` указан протокол, то его значение будет заменено. + +Пример использования: + +```php +// /index.php?r=site/index +echo Url::to(['site/index']); + +// /index.php?r=site/index&src=ref1#name +echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name']); + +// /index.php?r=post/edit&id=100 псевдоним "@postEdit" задан как "post/edit" +echo Url::to(['@postEdit', 'id' => 100]); + +// Текущий урл +echo Url::to(); + +// /images/logo.gif +echo Url::to('@web/images/logo.gif'); + +// images/logo.gif +echo Url::to('images/logo.gif'); + +// http://www.example.com/images/logo.gif +echo Url::to('@web/images/logo.gif', true); + +// https://www.example.com/images/logo.gif +echo Url::to('@web/images/logo.gif', 'https'); +``` + +Начиная с версии 2.0.3, вы можете использовать [[yii\helpers\Url::current()]], чтобы создавать урл на основе текущего +запрошенного роута и его GET-параметров. Вы можете изменить, удалить или добавить новые GET-параметры передав в метод +параметр `$params`. Например: + +```php +// предположим $_GET = ['id' => 123, 'src' => 'google'], а текущий роут "post/view" + +// /index.php?r=post/view&id=123&src=google +echo Url::current(); + +// /index.php?r=post/view&id=123 +echo Url::current(['src' => null]); +// /index.php?r=post/view&id=100&src=google +echo Url::current(['id' => 100]); +``` + + +## Запоминание урлов + +Существуют задачи, когда вам необходимо запомнить урл и потом использовать его в процессе одного или нескольких +последовательных запросов. Это может быть достигнуто следующим образом: + +```php +// Запомнить текущий урл +Url::remember(); + +// Запомнить определенный урл. Входные параметры смотрите на примере Url::to(). +Url::remember(['product/view', 'id' => 42]); + +// Запомнить урл под определенным именем +Url::remember(['product/view', 'id' => 42], 'product'); +``` + +В следующем запросе мы можем получить сохраненный урл следующим образом: + +```php +$url = Url::previous(); +$productUrl = Url::previous('product'); +``` + +## Проверить относительность урла + +Чтобы проверить относительный урл или нет (например, если в нем не содержится информации о хосте), вы можете использовать +следующий код: + +```php +$isRelative = Url::isRelative('test/it'); +``` From adc28bbbf01ddcd6e83ce90aa3809ca35e1bcfe7 Mon Sep 17 00:00:00 2001 From: halfling-rram Date: Mon, 18 May 2015 17:17:43 +0600 Subject: [PATCH 02/12] url rename --- docs/guide-ru/helper-url.md | 54 ++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/docs/guide-ru/helper-url.md b/docs/guide-ru/helper-url.md index a21019f52f..48bed83fd1 100644 --- a/docs/guide-ru/helper-url.md +++ b/docs/guide-ru/helper-url.md @@ -1,13 +1,13 @@ Url хелпер ========== -Url хелпер предоставляет набор статических методов для управления урлами. +Url хелпер предоставляет набор статических методов для управления URL. -## Получение общих урлов +## Получение общих URL -Вы можете использовать два метода получения общих урлов: домашний Урл (Home) и базовый Урл (Base) текущего запроса. -Используйте следующий код, чтобы получить домашний Урл: +Вы можете использовать два метода получения общих URL: домашний URL (Home) и базовый URL (Base) текущего запроса. +Используйте следующий код, чтобы получить домашний URL: ```php $relativeHomeUrl = Url::home(); @@ -15,10 +15,10 @@ $absoluteHomeUrl = Url::home(true); $httpsAbsoluteHomeUrl = Url::home('https'); ``` -Если вы не передали параметров, то получите относительный урл. Вы можете передать `true`, чтобы получить абсолютный урл +Если вы не передали параметров, то получите относительный URL. Вы можете передать `true`, чтобы получить абсолютный URL для текущего протокола или явно указать протокол (`https`, `http`). -Чтобы получить базовый Урл текущего запроса: +Чтобы получить базовый URL текущего запроса: ```php $relativeBaseUrl = Url::base(); @@ -28,32 +28,32 @@ $httpsAbsoluteBaseUrl = Url::base('https'); Единственный параметр данного метода работает также как и `Url::home()`. -## Создание Урлов +## Создание URL -Чтобы создать урл для соответствующего роута используйте метод `Url::toRoute()`. Метод использует [[\yii\web\UrlManager]]. -Для того чтобы создать урл: +Чтобы создать URL для соответствующего роута используйте метод `Url::toRoute()`. Метод использует [[\yii\web\UrlManager]]. +Для того чтобы создать URL: ```php $url = Url::toRoute(['product/view', 'id' => 42]); ``` Вы можете задать роут строкой, например, `site/index`. А также вы можете использовать массив, если хотите задать -дополнительные параметры запроса для урла. Формат массива должен быть следующим: +дополнительные параметры запроса для URL. Формат массива должен быть следующим: ```php // сгенерирует: /index.php?r=site/index¶m1=value1¶m2=value2 ['site/index', 'param1' => 'value1', 'param2' => 'value2'] ``` -Если вы хотите создать урл с якорем, то вы можете использовать параметр массива с ключом `#`. Например: +Если вы хотите создать URL с якорем, то вы можете использовать параметр массива с ключом `#`. Например: ```php // сгенерирует: /index.php?r=site/index¶m1=value1#name ['site/index', 'param1' => 'value1', '#' => 'name'] ``` -Роут может быть и абсолютным, и относительным. Абсолютный урл начинается со слеша (например, `/site/index`), -относительный - без (например, `site/index` or `index`). Относительный урл будет сконвертирован в абсолютный по следующим +Роут может быть и абсолютным, и относительным. Абсолютный URL начинается со слеша (например, `/site/index`), +относительный - без (например, `site/index` or `index`). Относительный URL будет сконвертирован в абсолютный по следующим правилам: - Если роут пустая строка, то будет использовано текущее значение [[\yii\web\Controller::route|route]]; @@ -86,17 +86,17 @@ echo Url::toRoute('site/index', 'https'); ``` Другой метод `Url::to()` очень похож на [[toRoute()]]. Единственное отличие: входным параметром должен быть массив. -Если будет передана строка, то она будет воспринята как урл. +Если будет передана строка, то она будет воспринята как URL. Первый аргумент может быть: -- массивом: будет вызван [[toRoute()]], чтобы сгенерировать урл. Например: `['site/index']`, `['post/index', 'page' => 2]`. +- массивом: будет вызван [[toRoute()]], чтобы сгенерировать URL. Например: `['site/index']`, `['post/index', 'page' => 2]`. В разделе [[toRoute()]] подробно описано как задавать роут; - Строка, начинающася с `@`, будет обработана как псевдоним. Будет возвращено соответствующее значение псевдонима; -- Пустая строка: вернет текущий урл; +- Пустая строка: вернет текущий URL; - Обычная строка: вернет строку без имзенений -Когда у метода задан второй параметр `$scheme` (строка или true), то сгенерированный урл будет с протоколом +Когда у метода задан второй параметр `$scheme` (строка или true), то сгенерированный URL будет с протоколом (полученным из [[\yii\web\UrlManager::hostInfo]]). Если в `$url` указан протокол, то его значение будет заменено. Пример использования: @@ -111,7 +111,7 @@ echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name']); // /index.php?r=post/edit&id=100 псевдоним "@postEdit" задан как "post/edit" echo Url::to(['@postEdit', 'id' => 100]); -// Текущий урл +// Текущий URL echo Url::to(); // /images/logo.gif @@ -127,7 +127,7 @@ echo Url::to('@web/images/logo.gif', true); echo Url::to('@web/images/logo.gif', 'https'); ``` -Начиная с версии 2.0.3, вы можете использовать [[yii\helpers\Url::current()]], чтобы создавать урл на основе текущего +Начиная с версии 2.0.3, вы можете использовать [[yii\helpers\Url::current()]], чтобы создавать URL на основе текущего запрошенного роута и его GET-параметров. Вы можете изменить, удалить или добавить новые GET-параметры передав в метод параметр `$params`. Например: @@ -144,32 +144,32 @@ echo Url::current(['id' => 100]); ``` -## Запоминание урлов +## Запоминание URL -Существуют задачи, когда вам необходимо запомнить урл и потом использовать его в процессе одного или нескольких +Существуют задачи, когда вам необходимо запомнить URL и потом использовать его в процессе одного или нескольких последовательных запросов. Это может быть достигнуто следующим образом: ```php -// Запомнить текущий урл +// Запомнить текущий URL Url::remember(); -// Запомнить определенный урл. Входные параметры смотрите на примере Url::to(). +// Запомнить определенный URL. Входные параметры смотрите на примере Url::to(). Url::remember(['product/view', 'id' => 42]); -// Запомнить урл под определенным именем +// Запомнить URL под определенным именем Url::remember(['product/view', 'id' => 42], 'product'); ``` -В следующем запросе мы можем получить сохраненный урл следующим образом: +В следующем запросе мы можем получить сохраненный URL следующим образом: ```php $url = Url::previous(); $productUrl = Url::previous('product'); ``` -## Проверить относительность урла +## Проверить относительность URL -Чтобы проверить относительный урл или нет (например, если в нем не содержится информации о хосте), вы можете использовать +Чтобы проверить относительный URL или нет (например, если в нем не содержится информации о хосте), вы можете использовать следующий код: ```php From eb620a93ab61389258c388e63bbef80fb980ab7a Mon Sep 17 00:00:00 2001 From: Davidson Alencar Date: Mon, 18 May 2015 10:09:05 -0300 Subject: [PATCH 03/12] docs/guide-pt-BR/db-migrations.md - update [ci skip] --- docs/guide-pt-BR/db-migrations.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/guide-pt-BR/db-migrations.md b/docs/guide-pt-BR/db-migrations.md index d2e6d416ec..b45d45ca14 100644 --- a/docs/guide-pt-BR/db-migrations.md +++ b/docs/guide-pt-BR/db-migrations.md @@ -35,6 +35,10 @@ Todas estas ferramentas são acessíveis através do comando `yii migrate`. Nest em detalhes como realizar várias tarefas usando estas ferramentas. Você também pode descobrir como usar cada ferramenta através do comando de ajuda `yii help migrate`. +> Observação: os migrations (migrações) podem afetar não só o esquema do banco de dados, + mas também ajustar os dados existentes para se conformar ao novo esquema, como + criar novas hierarquias de RBAC ou limpar dados de cache. + ## Criando Migrações From c8f00ccdd5470d12630c040bf3aeee17ce86e153 Mon Sep 17 00:00:00 2001 From: Davidson Alencar Date: Mon, 18 May 2015 10:10:21 -0300 Subject: [PATCH 04/12] docs/guide-pt-BR/intro-upgrade-from-v1.md - update [ci skip] --- docs/guide-pt-BR/intro-upgrade-from-v1.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guide-pt-BR/intro-upgrade-from-v1.md b/docs/guide-pt-BR/intro-upgrade-from-v1.md index 2695016094..811334d7c6 100644 --- a/docs/guide-pt-BR/intro-upgrade-from-v1.md +++ b/docs/guide-pt-BR/intro-upgrade-from-v1.md @@ -120,8 +120,8 @@ $object = Yii::createObject([ ], [$param1, $param2]); ``` -Mais detalhes sobre configurações podem ser encontradas na seção -[Configurações de Objetos](concept-configurations.md). +Mais detalhes sobre configurações podem ser encontradas na seção de +[Configurações](concept-configurations.md). Eventos From 18b803be3bb97b2a5298a6a6ab357ad7540f01fe Mon Sep 17 00:00:00 2001 From: Davidson Alencar Date: Mon, 18 May 2015 10:20:55 -0300 Subject: [PATCH 05/12] docs/guide-pt-BR/structure-applications.md - update [ci skip] --- docs/guide-pt-BR/structure-applications.md | 32 +++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/guide-pt-BR/structure-applications.md b/docs/guide-pt-BR/structure-applications.md index 4ccc6050b3..a70d09c034 100644 --- a/docs/guide-pt-BR/structure-applications.md +++ b/docs/guide-pt-BR/structure-applications.md @@ -67,7 +67,7 @@ caracteres alfanuméricos ao especificar um ID de aplicação. A propriedade [[yii\base\Application::basePath|basePath]] especifica o diretório raiz de um sistema. É o diretório que contém todo o código fonte protegido de um sistema. Sob este diretório, você normalmente verá subdiretórios tais como -`models`, `views`, `controllers`, que contém o código fonte correspondente ao +`models`, `views` e `controllers`, que contém o código fonte correspondente ao padrão MVC. Você pode configurar a propriedade [[yii\base\Application::basePath|basePath]] @@ -92,7 +92,7 @@ configuradas porque elas variam em diferentes aplicações. Esta propriedade permite que você defina um conjunto de [aliases](concept-aliases.md) em termos de um array. As chaves do array representam -os nomes de alias, e os valores são as definições correspondentes. Por exemplo, +os nomes de alias, e os valores são as definições correspondentes. Por exemplo: ```php [ @@ -103,8 +103,8 @@ os nomes de alias, e os valores são as definições correspondentes. Por exempl ] ``` -Essa propriedade está disponível de modo que você possa definir aliases em termos -de configurações da aplicação ao invés de chamadas ao método [[Yii::setAlias()]]. +Esta propriedade é fornecida para que você possa definir aliases na configuração +da aplicação ao invés de chamar o método [[Yii::setAlias()]]. #### [[yii\base\Application::bootstrap|bootstrap]] @@ -124,7 +124,7 @@ seguintes formatos: - um array de configuração. - uma função anônima que cria e retorna um componente. -Por exemplo, +Por exemplo: ```php [ @@ -168,7 +168,7 @@ também será chamado. Outro exemplo prático está na configuração do [Template Básico de Projetos](start-installation.md), onde os módulos `debug` e `gii` estão configurados como componentes de inicialização -quando a aplicação está rodando no ambiente de desenvolvimento, +quando a aplicação está rodando no ambiente de desenvolvimento: ```php if (YII_ENV_DEV) { @@ -196,7 +196,7 @@ em modo de manutenção e precisa tratar todas as requisições através de uma A configuração é um array, cujo primeiro elemento especifica a rota para a action. O restante dos elementos do array (pares de chave-valor) especificam os parâmetros -que devem ser atrelados à action. Por exemplo, +que devem ser atrelados à action. Por exemplo: ```php [ @@ -213,7 +213,7 @@ que devem ser atrelados à action. Por exemplo, Essa é a propriedade mais importante. Ela permite que você registre uma lista de componentes chamados [componentes de aplicação](structure-application-components.md) -que você pode usar em outros lugares. Por exemplo, +que você pode usar em outros lugares. Por exemplo: ```php [ @@ -284,7 +284,7 @@ diretório correspondente ao namespace. Por exemplo, dado um ID de controller É importante que as classes completas e qualificadas possam ser [carregadas automaticamente](concept-autoloading.md) e que o namespace das suas classes de controller correspondam ao valor dessa -propriedade. Doutra forma, você receberia um erro "Página Não Encontrada" ao +propriedade. Doutra forma, você receberia um erro de "Página Não Encontrada" ao acessar a aplicação. Caso você queira quebrar a convenção conforme descrito acima, você pode configurar @@ -318,7 +318,7 @@ Essa propriedade especifica os [módulos](structure-modules.md) que uma aplicaç contém. A propriedade recebe um array de classes de módulos ou [configurações](concept-configurations.md) -com as chaves do array sendo os IDs dos módulos. Por exemplo, +com as chaves do array sendo os IDs dos módulos. Por exemplo: ```php [ @@ -401,7 +401,7 @@ Essa propriedade é disponibilizada como uma maneira alternativa de definir a timezone do PHP em tempo de execução. Ao confiugrar essa propriedade, você está essencialmente chamando a função [date_default_timezone_set()](http://php.net/manual/en/function.date-default-timezone-set.php) -do PHP. Por exemplo, +do PHP. Por exemplo: ```php [ @@ -413,8 +413,8 @@ do PHP. Por exemplo, #### [[yii\base\Application::version|version]] Essa propriedade especifica a versão da aplicação. Seu valor padrão é `'1.0'`. -Você nem sempre precisa configurar essa propriedade se nenhuma parte do seu código -a está usando. +Você não precisa configurar esta propriedade se nenhuma parte do seu código +estiver utilizando-a. ### Propriedades Úteis @@ -581,7 +581,7 @@ A sintaxe de uso de `on eventName` é descrita na seção Alternativamente, você pode vincular manipuladores de evento durante o [processo de inicialização](runtime-bootstrapping.md) após a instância da aplicação -ser criada. Por exemplo, +ser criada. Por exemplo: ```php \Yii::$app->on(\yii\base\Application::EVENT_BEFORE_REQUEST, function ($event) { @@ -622,7 +622,7 @@ O nome do evento é `beforeAction`. O parâmetro do evento é uma instância de [[yii\base\ActionEvent]]. Um manipulador de evento pode definir o valor da propriedade [[yii\base\ActionEvent::isValid]] -como `false` para interromper a execução da action. Por exemplo, +como `false` para interromper a execução da action. Por exemplo: ```php [ @@ -649,7 +649,7 @@ O nome do evento é `afterAction`. O parâmetro do evento é uma instância de [[yii\base\ActionEvent]]. Através da propriedade [[yii\base\ActionEvent::result]], um manipulador de evento pode -acessar ou modificar o resultado da action. Por exemplo, +acessar ou modificar o resultado da action. Por exemplo: ```php [ From f3ad559c57d1f76abde2396f2a8423af19f85920 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Mon, 18 May 2015 16:51:50 +0300 Subject: [PATCH 06/12] Update structure-modules.md --- docs/guide-ru/structure-modules.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide-ru/structure-modules.md b/docs/guide-ru/structure-modules.md index 3b5b505ff8..a022526d31 100644 --- a/docs/guide-ru/structure-modules.md +++ b/docs/guide-ru/structure-modules.md @@ -1,7 +1,7 @@ Модули ======= -Модули - это законченные программные блоки, состоящие из [моделей](structure-models.md), [представлений](structure-views.md), [контроллеров](structure-controllers.md) и других вспомогательных компонентов. При установке модулей в [приложение](structure-applications.md), конечный пользователь получает доступ к их контроллерам. По этой причины модули часто рассматриваются как миниатюрные приложения. В отличии от [приложений](structure-applications.md), модули нельзя развертывать отдельно. Модули должны находиться внутри приложений. +Модули - это законченные программные блоки, состоящие из [моделей](structure-models.md), [представлений](structure-views.md), [контроллеров](structure-controllers.md) и других вспомогательных компонентов. При установке модулей в [приложение](structure-applications.md), конечный пользователь получает доступ к их контроллерам. По этой причине модули часто рассматриваются как миниатюрные приложения. В отличии от [приложений](structure-applications.md), модули нельзя развертывать отдельно. Модули должны находиться внутри приложений. ## Создание модулей From 9cb416c0eecf4a0e7d73bd830d335813c437a6a6 Mon Sep 17 00:00:00 2001 From: Davidson Alencar Date: Mon, 18 May 2015 13:07:30 -0300 Subject: [PATCH 07/12] docs/guide-pt-BR/structure-controllers.md - update [ci skip] --- docs/guide-pt-BR/structure-controllers.md | 53 +++++++++++------------ 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/docs/guide-pt-BR/structure-controllers.md b/docs/guide-pt-BR/structure-controllers.md index a8412715f3..36fbaff198 100644 --- a/docs/guide-pt-BR/structure-controllers.md +++ b/docs/guide-pt-BR/structure-controllers.md @@ -119,7 +119,7 @@ Por exemplo, você pode usar o `article` como o ID do um controller para tratar dados de artigos. Por padrão, os IDs dos controllers devem conter apenas esses caracteres: -letras inglesas em caixa baixa, números, underscores (underline), traços e barras. +letras inglesas em caixa baixa, números, underscores (underline), hífens e barras. Por exemplo, `article` e `post-comment` são ambos IDs de controllers válidos, enquanto `article?`, `PostComment`, `admin\post` não são. @@ -134,22 +134,22 @@ barras são usadas para separar os níveis dos subdiretórios (por exemplo, `pan ### Nomenclatura da Classe do Controller Os nomes da classes dos controllers podem ser derivadas dos IDs dos controllers -de acordo com as seguintes regras: +de acordo com as seguintes procedimentos: -* Colocar em caixa alta a primeira letra de cada palavra separadas por traço. - Observe que se o ID do controller possuir barras, a regra é aplicada apenas na - parte após a última barra no ID. -* Remover os traços e substituir todas as barras por barras invertidas. -* Adicionar `Controller` como sufixo. -* E preceder ao [[yii\base\Application::controllerNamespace|namespace controller]]. +1. Colocar em caixa alta a primeira letra de cada palavra separadas por traço. + Observe que se o ID do controller possuir barras, a regra é aplicada apenas na + parte após a última barra no ID. +2. Remover os traços e substituir todas as barras por barras invertidas. +3. Adicionar `Controller` como sufixo. +4. Preceder ao [[yii\base\Application::controllerNamespace|namespace do controller]]. Segue alguns exemplos, assumindo que o [[yii\base\Application::controllerNamespace|namespace do controller]] tenha por padrão o valor `app\controllers`: -* `article` deriva-se de `app\controllers\ArticleController`; -* `post-comment` deriva-se de `app\controllers\PostCommentController`; -* `admin/post-comment` deriva-se de `app\controllers\admin\PostCommentController`; -* `adminPanels/post-comment` deriva-se de `app\controllers\adminPanels\PostCommentController`. +* `article` torna-se `app\controllers\ArticleController`; +* `post-comment` torna-se `app\controllers\PostCommentController`; +* `admin/post-comment` torna-se `app\controllers\admin\PostCommentController`; +* `adminPanels/post-comment` torna-se `app\controllers\adminPanels\PostCommentController`. As classes dos controllers devem ser [autoloadable](concept-autoloading.md). Por esta razão, nos exemplos anteriores, o controller `article` deve ser salvo @@ -165,11 +165,11 @@ categorias e não quiser usar [módulos](structure-modules.md). Você pode configurar um [[yii\base\Application::controllerMap|mapeamento de controllers]] para superar as barreiras impostas pelos IDs de controllers e pelos nomes de classes -descritos acima. Isto é útil principalmente quando quiser esconder alguns controllers +descritos acima. Isto é útil principalmente quando quiser esconder controllers de terceiros na qual você não tem controle sobre seus nomes de classes. Você pode configurar o [[yii\base\Application::controllerMap|mapeamento de controllers]] -na [configuração da aplicação](structure-applications.md#application-configurations) como o seguinte exemplo: +na [configuração da aplicação](structure-applications.md#application-configurations). Por exemplo: ```php [ @@ -194,8 +194,7 @@ Quando uma requisição não especificar uma [rota](#id-da-rota), será utilizad rota especificada pela propriedade. Para as [[yii\web\Application|aplicações Web]], este valor é `'site'`, enquanto para as [[yii\console\Application|aplicações console]] é `help`. Portanto, se uma -URL `http://hostname/index.php` for usada, significa que o controller `site` será -usado nesta requisição. +URL for `http://hostname/index.php`, o controller `site` será utilizado nesta requisição. Você pode alterar o controller padrão como a seguinte [configuração da aplicação](structure-applications.md#application-configurations): @@ -240,13 +239,13 @@ um recurso. Por esta razão, os IDs das ações geralmente são verbos, tais com Por padrão, os IDs das ações devem conter apenas esses caracteres: letras inglesas em caixa baixa, números, underscores (underline) e traços. Os traços em um ID da -ação são usados para separar palavras. Por exemplo, `view`, `update2`, `comment-post` -todos são IDs válidos, enquanto `view?`, `Update` não são. +ação são usados para separar palavras. Por exemplo, `view`, `update2` e `comment-post` +são IDs válidos, enquanto `view?` e `Update` não são. Você pode criar ações de duas maneiras: ações inline (em sequência) e ações standalone (autônomas). Uma ação inline é definida pelo método de uma classe controller, enquanto uma ação standalone é uma classe que estende de -[[yii\base\Action]] ou de suas classes filhas. As ações inline exigem menos esforço +[[yii\base\Action]] ou de uma classe-filha. As ações inline exigem menos esforço para serem criadas e muitas vezes as preferidas quando não se tem a intenção de reutilizar estas ações. Ações standalone, por outro lado, são criados principalmente para serem utilizados em diferentes controllers ou para serem distribuídos como @@ -258,11 +257,11 @@ para serem utilizados em diferentes controllers ou para serem distribuídos como As ações inline referem-se a os chamados métodos de ação, que foram descritos anteriormente. Os nomes dos métodos de ações são derivadas dos IDs das ações de acordo com os -seguintes critérios: +seguintes procedimentos: -* Colocar em caixa alta a primeira letra de cada palavra do ID da ação; -* Remover os traços; -* Adicionar o prefixo `action`. +1. Colocar em caixa alta a primeira letra de cada palavra do ID da ação; +2. Remover os traços; +3. Adicionar o prefixo `action`. Por exemplo, `index` torna-se `actionIndex` e `hello-world` torna-se `actionHelloWorld`. @@ -280,7 +279,7 @@ lugares ou se deseja distribuir uma ação, deve considerar defini-la como uma * ### Ações Standalone Ações standalone são definidas por classes de ações que estendem de [[yii\base\Action]] -ou de suas classes filhas. +ou de uma classe-filha. Por example, nas versões do Yii, existe a [[yii\web\ViewAction]] e a [[yii\web\ErrorAction]], ambas são ações standalone. Para usar uma ação standalone, você deve *mapear as ações* sobrescrevendo o método @@ -457,7 +456,7 @@ ao seguinte ciclo de vida para concluir a requisição: * Se o ID da ação for encontrada para corresponder a um método de ação, uma ação inline será criada; * Caso contrário, uma exceção [[yii\base\InvalidRouteException]] será lançada. 3. De forma sequencial, o controller chama o método `beforeAction()` da aplicação, o módulo (se o controller pertencer a um módulo) e o controller. - * Se uma das chamadas retornar false, o restante dos métodos `beforeAction()` serão ignoradas e a execução da ação será cancelada. + * Se uma das chamadas retornar false, o restante dos métodos subsequentes `beforeAction()` serão ignoradas e a execução da ação será cancelada. * Por padrão, cada método `beforeAction()` desencadeia a execução de um evento chamado `beforeAction` na qual você pode associar a uma função (handler). 4. O controller executa a ação: * Os parâmetros da ação serão analizados e populados a partir dos dados obtidos pela requisição; @@ -466,14 +465,14 @@ ao seguinte ciclo de vida para concluir a requisição: 6. A aplicação obterá o resultado da ação e irá associá-lo na [resposta](runtime-responses.md). -## Best Practices +## Boas Práticas Em uma aplicação bem projetada, frequentemente os controllers são bem pequenos na qual cada ação possui poucas linhas de códigos. Se o controller for um pouco complicado, geralmente indica que terá que refaze-lo e passar algum código para outro classe. -Em resumo, os controllers: +Segue algumas boas práticas em destaque. Os controllers: * podem acessar os dados de uma [requisição](runtime-requests.md); * podem chamar os métodos dos [models](structure-models.md) e outros componentes From d6ac215571ef528f787f964ec5d0aebdf952dd99 Mon Sep 17 00:00:00 2001 From: Davidson Alencar Date: Mon, 18 May 2015 13:07:39 -0300 Subject: [PATCH 08/12] docs/guide-pt-BR/structure-entry-scripts.md - update [ci skip] --- docs/guide-pt-BR/structure-entry-scripts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide-pt-BR/structure-entry-scripts.md b/docs/guide-pt-BR/structure-entry-scripts.md index ca718e2e61..2984cfc741 100644 --- a/docs/guide-pt-BR/structure-entry-scripts.md +++ b/docs/guide-pt-BR/structure-entry-scripts.md @@ -3,7 +3,7 @@ Scripts de Entrada Scripts de entrada são o primeiro passo no processo de inicialização da aplicação. Uma aplicação (seja uma aplicação Web ou uma aplicação console) possui um único script de -entrada. Os usuários finais fazem requisições a scripts de entrada que criam +entrada. Os usuários finais fazem requisições nos scripts de entrada que criam as instâncias da aplicação e redirecionam as requisições para elas. Os scripts de entrada para aplicações Web devem estar armazenados em diretórios From a0cc77d78de7d6046f8cd5987aefe22355b468f3 Mon Sep 17 00:00:00 2001 From: Andrew Potter Date: Mon, 18 May 2015 22:44:00 +0200 Subject: [PATCH 09/12] Update Model.php close #8463 --- framework/base/Model.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/framework/base/Model.php b/framework/base/Model.php index 0e626c62c5..6620003624 100644 --- a/framework/base/Model.php +++ b/framework/base/Model.php @@ -103,10 +103,10 @@ class Model extends Component implements IteratorAggregate, ArrayAccess, Arrayab * * where * - * - attribute list: required, specifies the attributes array to be validated, for single attribute you can pass string; + * - attribute list: required, specifies the attributes array to be validated, for single attribute you can pass a string; * - validator type: required, specifies the validator to be used. It can be a built-in validator name, * a method name of the model class, an anonymous function, or a validator class name. - * - on: optional, specifies the [[scenario|scenarios]] array when the validation + * - on: optional, specifies the [[scenario|scenarios]] array in which the validation * rule can be applied. If this option is not set, the rule will apply to all scenarios. * - additional name-value pairs can be specified to initialize the corresponding validator properties. * Please refer to individual validator class API for possible properties. @@ -119,12 +119,12 @@ class Model extends Component implements IteratorAggregate, ArrayAccess, Arrayab * function validatorName($attribute, $params) * ~~~ * - * In the above `$attribute` refers to currently validated attribute name while `$params` contains an array of - * validator configuration options such as `max` in case of `string` validator. Currently validate attribute value + * In the above `$attribute` refers to attribute currently being validated while `$params` contains an array of + * validator configuration options such as `max` in case of `string` validator. The value of the attribute currently being validated * can be accessed as `$this->[$attribute]`. * * Yii also provides a set of [[Validator::builtInValidators|built-in validators]]. - * They each has an alias name which can be used when specifying a validation rule. + * Each one has an alias name which can be used when specifying a validation rule. * * Below are some examples: * From d5693cfe01b050588081ce3d7aecd5b536768067 Mon Sep 17 00:00:00 2001 From: Carsten Brandt Date: Tue, 19 May 2015 01:16:47 +0200 Subject: [PATCH 10/12] small improvements of Model phpdoc --- framework/base/Model.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/framework/base/Model.php b/framework/base/Model.php index 6620003624..7c1f06f350 100644 --- a/framework/base/Model.php +++ b/framework/base/Model.php @@ -119,9 +119,10 @@ class Model extends Component implements IteratorAggregate, ArrayAccess, Arrayab * function validatorName($attribute, $params) * ~~~ * - * In the above `$attribute` refers to attribute currently being validated while `$params` contains an array of + * In the above `$attribute` refers to the attribute currently being validated while `$params` contains an array of * validator configuration options such as `max` in case of `string` validator. The value of the attribute currently being validated - * can be accessed as `$this->[$attribute]`. + * can be accessed as `$this->$attribute`. Note the `$` before `attribute`; this is taking the value of the variable + * `$attribute` and using it as the name of the property to access. * * Yii also provides a set of [[Validator::builtInValidators|built-in validators]]. * Each one has an alias name which can be used when specifying a validation rule. From 0d8fadc366e117133f9b96db3642767d37fbc31e Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Mon, 18 May 2015 23:54:49 -0400 Subject: [PATCH 11/12] guide WIP [skip ci] --- docs/guide/tutorial-performance-tuning.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/guide/tutorial-performance-tuning.md b/docs/guide/tutorial-performance-tuning.md index 778c91369f..752bd337e1 100644 --- a/docs/guide/tutorial-performance-tuning.md +++ b/docs/guide/tutorial-performance-tuning.md @@ -9,18 +9,17 @@ on your application out of the box and can be fine-tuned further for production environment. As for the application, we'll provide some of the best practices along with examples on how to apply them to Yii. -Preparing environment ---------------------- -A well configured environment to run PHP application really matters. In order to get maximum performance: +## Preparing Environment -- Always use the latest stable PHP version. Each major release brings significant performance improvements and reduced - memory usage. -- Use [APC](http://ru2.php.net/apc) for PHP 5.4 and less or [Opcache](http://php.net/opcache) for PHP 5.5 and more. It - gives a very good performance boost. +A well configured environment to run PHP application really matters. In order to get maximum performance, -Preparing framework for production ----------------------------------- +- Use the latest stable PHP version. Major releases of PHP may bring significant performance improvement. +- Enable bytecode caching with [Opcache](http://php.net/opcache) (PHP 5.5 or later) or [APC](http://ru2.php.net/apc) + (PHP 5.4 or earlier). + + +## Adjusting Framework Configurations ### Disabling Debug Mode From 68351e7d8f18d1a1055277c9bf77ac916724f243 Mon Sep 17 00:00:00 2001 From: Klimov Paul Date: Tue, 19 May 2015 10:11:09 +0300 Subject: [PATCH 12/12] `yii\db\ActiveQuery::removeDuplicatedModels()` throws exception if model primary key is empty --- framework/db/ActiveQuery.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/framework/db/ActiveQuery.php b/framework/db/ActiveQuery.php index 6ad60bf140..9cfc6ad0de 100644 --- a/framework/db/ActiveQuery.php +++ b/framework/db/ActiveQuery.php @@ -7,6 +7,8 @@ namespace yii\db; +use yii\base\InvalidConfigException; + /** * ActiveQuery represents a DB query associated with an Active Record class. * @@ -235,6 +237,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface * Removes duplicated models by checking their primary key values. * This method is mainly called when a join query is performed, which may cause duplicated rows being returned. * @param array $models the models to be checked + * @throws InvalidConfigException if model primary key is empty * @return array the distinctive models */ private function removeDuplicatedModels($models) @@ -257,6 +260,8 @@ class ActiveQuery extends Query implements ActiveQueryInterface $hash[$key] = true; } } + } elseif (empty($pks)) { + throw new InvalidConfigException("Primary key of '{$class}' can not be empty."); } else { $pk = reset($pks); foreach ($models as $i => $model) {