Merge branch 'master' of github.com:yiisoft/yii2 into docs-ja-0519

This commit is contained in:
Nobuo Kihara
2015-05-19 21:33:42 +09:00
10 changed files with 247 additions and 62 deletions

View File

@@ -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 <span id="creating-migrations"></span>

View File

@@ -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

View File

@@ -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]] <span id="bootstrap"></span>
@@ -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]] <span id="version"></span>
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 <span id="useful-properties"></span>
@@ -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
[

View File

@@ -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 <span id="controller-class-naming"></span>
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 <span id="standalone-actions"></span>
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 <span id="best-practices"></span>
## Boas Práticas <span id="best-practices"></span>
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

View File

@@ -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

177
docs/guide-ru/helper-url.md Normal file
View File

@@ -0,0 +1,177 @@
Url хелпер
==========
Url хелпер предоставляет набор статических методов для управления URL.
## Получение общих URL <span id="getting-common-urls"></span>
Вы можете использовать два метода получения общих URL: домашний URL (Home) и базовый URL (Base) текущего запроса.
Используйте следующий код, чтобы получить домашний URL:
```php
$relativeHomeUrl = Url::home();
$absoluteHomeUrl = Url::home(true);
$httpsAbsoluteHomeUrl = Url::home('https');
```
Если вы не передали параметров, то получите относительный URL. Вы можете передать `true`, чтобы получить абсолютный URL
для текущего протокола или явно указать протокол (`https`, `http`).
Чтобы получить базовый URL текущего запроса:
```php
$relativeBaseUrl = Url::base();
$absoluteBaseUrl = Url::base(true);
$httpsAbsoluteBaseUrl = Url::base('https');
```
Единственный параметр данного метода работает также как и `Url::home()`.
## Создание URL <span id="creating-urls"></span>
Чтобы создать URL для соответствующего роута используйте метод `Url::toRoute()`. Метод использует [[\yii\web\UrlManager]].
Для того чтобы создать URL:
```php
$url = Url::toRoute(['product/view', 'id' => 42]);
```
Вы можете задать роут строкой, например, `site/index`. А также вы можете использовать массив, если хотите задать
дополнительные параметры запроса для URL. Формат массива должен быть следующим:
```php
// сгенерирует: /index.php?r=site/index&param1=value1&param2=value2
['site/index', 'param1' => 'value1', 'param2' => 'value2']
```
Если вы хотите создать URL с якорем, то вы можете использовать параметр массива с ключом `#`. Например:
```php
// сгенерирует: /index.php?r=site/index&param1=value1#name
['site/index', 'param1' => 'value1', '#' => 'name']
```
Роут может быть и абсолютным, и относительным. Абсолютный URL начинается со слеша (например, `/site/index`),
относительный - без (например, `site/index` or `index`). Относительный URL будет сконвертирован в абсолютный по следующим
правилам:
- Если роут пустая строка, то будет использовано текущее значение [[\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()]]. Единственное отличие: входным параметром должен быть массив.
Если будет передана строка, то она будет воспринята как URL.
Первый аргумент может быть:
- массивом: будет вызван [[toRoute()]], чтобы сгенерировать URL. Например: `['site/index']`, `['post/index', 'page' => 2]`.
В разделе [[toRoute()]] подробно описано как задавать роут;
- Строка, начинающася с `@`, будет обработана как псевдоним. Будет возвращено соответствующее значение псевдонима;
- Пустая строка: вернет текущий URL;
- Обычная строка: вернет строку без имзенений
Когда у метода задан второй параметр `$scheme` (строка или true), то сгенерированный URL будет с протоколом
(полученным из [[\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]);
// Текущий URL
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()]], чтобы создавать URL на основе текущего
запрошенного роута и его 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]);
```
## Запоминание URL <span id="remember-urls"></span>
Существуют задачи, когда вам необходимо запомнить URL и потом использовать его в процессе одного или нескольких
последовательных запросов. Это может быть достигнуто следующим образом:
```php
// Запомнить текущий URL
Url::remember();
// Запомнить определенный 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 <span id="checking-relative-urls"></span>
Чтобы проверить относительный URL или нет (например, если в нем не содержится информации о хосте), вы можете использовать
следующий код:
```php
$isRelative = Url::isRelative('test/it');
```

View File

@@ -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), модули нельзя развертывать отдельно. Модули должны находиться внутри приложений.
## Создание модулей <span id="creating-modules"></span>

View File

@@ -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 <span id="preparing-environment"></span>
- 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 <span id="adjusting-framework"></span>
### Disabling Debug Mode