From 0d5265fbc75b20a3e83e9ca03f6a12ad11421b33 Mon Sep 17 00:00:00 2001 From: Davidson Alencar Date: Mon, 17 Aug 2015 23:41:41 -0300 Subject: [PATCH] docs/guide-pt-BR typos [skip ci] --- docs/guide-pt-BR/README.md | 4 +- docs/guide-pt-BR/rest-authentication.md | 30 +-- docs/guide-pt-BR/rest-error-handling.md | 30 +-- docs/guide-pt-BR/rest-rate-limiting.md | 67 ++---- docs/guide-pt-BR/rest-response-formatting.md | 28 ++- docs/guide-pt-BR/rest-routing.md | 24 +- docs/guide-pt-BR/rest-versioning.md | 8 +- docs/guide-pt-BR/tutorial-core-validators.md | 316 ++++++++++++++------------- docs/guide-pt-BR/tutorial-yii-integration.md | 45 ++-- 9 files changed, 264 insertions(+), 288 deletions(-) diff --git a/docs/guide-pt-BR/README.md b/docs/guide-pt-BR/README.md index 3498a70..89513ca 100644 --- a/docs/guide-pt-BR/README.md +++ b/docs/guide-pt-BR/README.md @@ -165,13 +165,13 @@ Tópicos Especiais * [Template Avançado de Projetos](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-pt-BR/README.md) * [Construindo uma Aplicação a Partir do Zero](tutorial-start-from-scratch.md) * [Comandos de Console](tutorial-console.md) -* [Ferramentas de Validação Embutidas](tutorial-core-validators.md) +* [Validadores Nativos](tutorial-core-validators.md) * [Internacionalização](tutorial-i18n.md) * [Enviando E-mails](tutorial-mailing.md) * [Ajustes no Desempenho](tutorial-performance-tuning.md) * [Ambiente de Hospedagem Compartilhada](tutorial-shared-hosting.md) * [Motor de Template](tutorial-template-engines.md) -* [Utilização com Códigos de Terceiros](tutorial-yii-integration.md) +* [Trabalhando com Códigos de Terceiros](tutorial-yii-integration.md) Widgets diff --git a/docs/guide-pt-BR/rest-authentication.md b/docs/guide-pt-BR/rest-authentication.md index 660ad59..5f3aa83 100644 --- a/docs/guide-pt-BR/rest-authentication.md +++ b/docs/guide-pt-BR/rest-authentication.md @@ -1,29 +1,29 @@ Autenticação ============== -Ao contrário de aplicações Web, APIs RESTful são geralmente stateless, o que significa que as sessões ou os cookies não devem ser utilizados. Portanto, cada requisição deve vir com algum tipo de credenciais de autenticação pois o estado de autenticação do usuário não pode ser mantido por sessões ou cookies. Uma prática comum é enviar um token de acesso secreto com cada solicitação para autenticar o usuário. Uma vez que um token de acesso pode ser utilizado para identificar de forma exclusiva e autenticar um usuário, **Solicitações de API devem sempre ser enviadas via HTTPS para evitar ataques man-in-the-middle (MitM)**. +Ao contrário de aplicações Web, APIs RESTful são geralmente stateless, o que significa que as sessões ou os cookies não devem ser utilizados. Portanto, cada requisição deve vir com algum tipo de credencial de autenticação pois o estado de autenticação do usuário não pode ser mantido por sessões ou cookies. Uma prática comum é enviar um token de acesso secreto com cada solicitação para autenticar o usuário. Uma vez que um token de acesso pode ser utilizado para identificar de forma exclusiva e autenticar um usuário. **Solicitações de API devem sempre ser enviadas via HTTPS para evitar ataques man-in-the-middle (MitM)**. Existem diferentes maneiras de enviar um token de acesso: -* [Autenticação Básica HTTP](http://en.wikipedia.org/wiki/Basic_access_authentication): o token de acesso é enviado como o nome de usuário. Isso só deve ser usado quando um token de acesso pode ser armazenado com segurança no lado do consumidor da API. Por exemplo, o consumidor API é um programa executado em um servidor. -* Parâmetro de consulta da URL: o token de acesso é enviado como um parâmetro de consulta na URL da API, ex., `https://example.com/users?access-token=xxxxxxxx`. Porque a maioria dos servidores Web materão os parâmetros de consulta nos logs do servidor, esta abordagem deve ser utilizada principalmente para servir requisições `JSONP` que não pode usar cabeçalhos HTTP para enviar tokens de acesso. +* [Autenticação Básica HTTP](http://en.wikipedia.org/wiki/Basic_access_authentication): o token de acesso é enviado como um nome de usuário. Isso só deve ser usado quando um token de acesso puder ser armazenado com segurança no lado do consumidor da API. Por exemplo, o consumidor API é um programa executado em um servidor. +* Parâmetro de consulta da URL: o token de acesso é enviado como um parâmetro de consulta na URL da API, ex., `https://example.com/users?access-token=xxxxxxxx`. Como a maioria dos servidores Web manterão os parâmetros de consulta nos logs do servidor, esta abordagem deve ser utilizada principalmente para servir requisições `JSONP` que não pode usar cabeçalhos HTTP para enviar tokens de acesso. * [OAuth 2](http://oauth.net/2/): o token de acesso é obtido pelo consumidor a partir de um servidor de autorização e enviado para o servidor da API via [HTTP Bearer Tokens] (http://tools.ietf.org/html/rfc6750), de acordo com o protocolo OAuth2. Yii suporta todos os métodos de autenticação descritos acima. Você também pode criar facilmente um novo método de autenticação. Para ativar a autenticação nas suas APIs, siga os seguintes passos: -1. Configure o `user` [application component](structure-application-components.md): - - Defina a propriedade [[yii\web\User::enableSession|enableSession]] como `falso`. +1. Configure o [componente de aplicação](structure-application-components.md) `user`: + - Defina a propriedade [[yii\web\User::enableSession|enableSession]] como `false`. - Defina a propriedade [[yii\web\User::loginUrl|loginUrl]] como `null` para mostrar o erro HTTP 403 em vez de redirecionar para a página de login. 2. Especificar quais métodos de autenticação você planeja usar configurando o behavior `authenticator` na sua classe controller REST. -3. Implemente [[yii\web\IdentityInterface::findIdentityByAccessToken()]] na sua [[yii\web\User::identityClass|user identity class]]. +3. Implemente [[yii\web\IdentityInterface::findIdentityByAccessToken()]] na sua [[yii\web\User::identityClass|classe de identidade do usuário]]. -Passo 1 Não é obrigatório, mas é recomendado para APIs RESTful que deve ser stateless. Quando [[yii\web\User::enableSession|enableSession]] está marcado como falso, o status de autenticação de usuário NÃO será mantido entre as requisições usando sessões. Em lugar disso, autenticação será realizada para cada requisição, que é realizado no passo 2 e 3. +Passo 1 não é obrigatório, mas é recomendado para APIs RESTful stateless. Quando [[yii\web\User::enableSession|enableSession]] está marcado como falso, o status de autenticação de usuário NÃO será mantido entre as requisições usando sessões. Em lugar disso, autenticação será realizada para cada requisição, que é realizado no passo 2 e 3. -> Dica: Você pode configurar [[yii\web\User::enableSession|enableSession]] do componente `user` da aplicação -> nas configurações da aplicação se você estiver desenvolvendo APIs RESTful nos termos da aplicação. Se você desenvolver -> APIs RESTful como um módulo, você pode colocar a seguinte linha no método `init()` do módulo, conforme abaixo: +> Dica: Você pode configurar [[yii\web\User::enableSession|enableSession]] do componente `user` +> nas configurações da aplicação se você estiver desenvolvendo APIs RESTful para sua aplicação. Se você desenvolver +> APIs RESTful como um módulo, você pode colocar a seguinte linha no método `init()` do módulo, conforme exemplo a seguir: > > ```php > public function init() @@ -33,7 +33,7 @@ Passo 1 Não é obrigatório, mas é recomendado para APIs RESTful que deve ser > } > ``` -Por exemplo, para usar autenticação HTTP básica, você pode configurar o behavior `authenticator` como abaixo, +Por exemplo, para usar autenticação HTTP básica, você pode configurar o behavior `authenticator` como o seguinte: ```php use yii\filters\auth\HttpBasicAuth; @@ -48,7 +48,7 @@ public function behaviors() } ``` -Se você quiser dar suporte a todos os três métodos de autenticação explicado acima, você pode utilizar o `CompositeAuth` conforme mostrado abaixo, +Se você quiser dar suporte a todos os três métodos de autenticação explicado acima, você pode utilizar o `CompositeAuth` conforme mostrado a seguir: ```php use yii\filters\auth\CompositeAuth; @@ -74,7 +74,7 @@ public function behaviors() Cada elemento em `authMethods` deve ser o nome de uma classe de método de autenticação ou um array de configuração. -Implementação de `findIdentityByAccessToken()` é específico da aplicação. Por exemplo, em cenários simples quando cada usuário só pode ter um token de acesso, você pode armazenar o token de acesso em uma coluna `access_token` na tabela `user`. O método pode então ser facilmente implementado na classe `User` como abaixo, +Implementação de `findIdentityByAccessToken()` é específico por aplicação. Por exemplo, em cenários simples quando cada usuário só pode ter um token de acesso, você pode armazenar o token de acesso em uma coluna `access_token` na tabela `user`. O método pode então ser facilmente implementado na classe `User` como o seguinte: ```php use yii\db\ActiveRecord; @@ -98,7 +98,7 @@ Se a autenticação falhar, uma resposta HTTP com status 401 será enviado de v ## Autorização -Após um usuário se autenticar, você provavelmente vai querer verificar se ele ou ela tem a permissão para executar a ação solicitada para o recurso solicitado. Este processo é chamado de *autorização* que é tratada em pormenor na seção de [Autorização](security-authorization.md). +Após um usuário se autenticar, você provavelmente vai querer verificar se ele ou ela tem a permissão para executar a ação do recurso solicitado. Este processo é chamado de *autorização* que é tratada em pormenor na seção de [Autorização](security-authorization.md). -Se o seu controllers estende de [[yii\rest\ActiveController]], você pode sobrescrever o método [[yii\rest\Controller::checkAccess()|checkAccess()]] para executar verificação de autorização. O método será chamado pelas ações incorporadas fornecidas pelo [[yii\rest\ActiveController]]. +Se o seu controller estende de [[yii\rest\ActiveController]], você pode sobrescrever o método [[yii\rest\Controller::checkAccess()|checkAccess()]] para executar a verificação de autorização. O método será chamado pelas ações incorporadas fornecidas pelo [[yii\rest\ActiveController]]. diff --git a/docs/guide-pt-BR/rest-error-handling.md b/docs/guide-pt-BR/rest-error-handling.md index 5e86553..861506f 100644 --- a/docs/guide-pt-BR/rest-error-handling.md +++ b/docs/guide-pt-BR/rest-error-handling.md @@ -1,8 +1,8 @@ -Manipulando Erros +Tratamento de Erros ============== Ao manusear uma requisição da API RESTful, se existir um erro na requisição do usuário ou se alguma coisa inesperada acontecer no servidor, você pode simplesmente lançar uma exceção para notificar o usuário de que algo deu errado. -Se você puder identificar a causa do erro (ex., o recurso requisitado não existe), você deve considerar lançar uma exceção juntamente com um código de status HTTP adequado (ex., [[yii\web\NotFoundHttpException]] representa um código de status 404). Yii irá enviar a resposta juntamente com o código e texto do status HTTP correspondente. Yii também incluirá a representação serializada da exceção no corpo da resposta. Por exemplo: +Se você puder identificar a causa do erro (ex., o recurso requisitado não existe), você deve considerar lançar uma exceção juntamente com um código de status HTTP adequado (ex., [[yii\web\NotFoundHttpException]] representa um código de status 404). O Yii enviará a resposta juntamente com o código e o texto do status HTTP correspondente. O Yii também incluirá a representação serializada da exceção no corpo da resposta. Por exemplo: ``` HTTP/1.1 404 Not Found @@ -19,20 +19,20 @@ Content-Type: application/json; charset=UTF-8 } ``` -A lista a seguir descrimina os códigos de status HTTP que são usados pelo REST framework Yii: +A lista a seguir descrimina os códigos de status HTTP que são usados pelo framework REST do Yii: -* `200`: OK. Tudo funcionou conforme o esperado. -* `201`: Um recurso foi criado com êxito em resposta a uma requisição `POST`. O cabeçalho `location` contém a URL que aponta para o recurso recém-criado. -* `204`: A requisição foi tratada com sucesso e a resposta não contém nenhum conteúdo no corpo (por exemplo uma requisição `DELETE`). -* `304`: O recurso não foi modificado. Você pode usar a versão em cache. -* `400`: Requisição malfeita. Isto pode ser causado por várias ações por parte do usuário, tais como o fornecimento de um JSON inválido no corpo da requisição, fornecendo parâmetros inválidos, etc. -* `401`: Falha de autenticação. -* `403`: O usuário autenticado não tem permissão para acessar o recurso da API solicitado. -* `404`: O recurso requisitado não existe. -* `405`: Método não permitido. Favor verificar o cabeçalho `Allow` para conhecer os métodos HTTP permitidos. -* `415`: Tipo de mídia não suportada. O número de versão ou tipo content type requisitado é inválido. -* `422`: Falha na validação dos dados (na resposta a uma requisição `POST`, por exemplo). Por favor, verifique o corpo da resposta para mensagens de erro detalhadas. -* `429`: Excesso de requisições. A requisição foi rejeitada devido a limitação de taxa. +* `200`: OK. Tudo funcionou conforme o esperado; +* `201`: Um recurso foi criado com êxito em resposta a uma requisição `POST`. O cabeçalho `location` contém a URL que aponta para o recurso recém-criado; +* `204`: A requisição foi tratada com sucesso e a resposta não contém nenhum conteúdo no corpo (por exemplo uma requisição `DELETE`); +* `304`: O recurso não foi modificado. Você pode usar a versão em cache; +* `400`: Requisição malfeita. Isto pode ser causado por várias ações por parte do usuário, tais como o fornecimento de um JSON inválido no corpo da requisição, fornecendo parâmetros inválidos, etc; +* `401`: Falha de autenticação; +* `403`: O usuário autenticado não tem permissão para acessar o recurso da API solicitado; +* `404`: O recurso requisitado não existe; +* `405`: Método não permitido. Favor verificar o cabeçalho `Allow` para conhecer os métodos HTTP permitidos; +* `415`: Tipo de mídia não suportada. O número de versão ou o content type requisitado são inválidos; +* `422`: Falha na validação dos dados (na resposta a uma requisição `POST`, por exemplo). Por favor, verifique o corpo da resposta para visualizar a mensagem detalhada do erro; +* `429`: Excesso de requisições. A requisição foi rejeitada devido a limitação de taxa; * `500`: Erro interno do servidor. Isto pode ser causado por erros internos do programa. ## Customizando Resposta de Erro diff --git a/docs/guide-pt-BR/rest-rate-limiting.md b/docs/guide-pt-BR/rest-rate-limiting.md index 3c5d38d..95c786a 100644 --- a/docs/guide-pt-BR/rest-rate-limiting.md +++ b/docs/guide-pt-BR/rest-rate-limiting.md @@ -1,67 +1,38 @@ -Limitação de Taxa +Limitador de Acesso ============= +Para prevenir abusos, você pode considerar a utilização de um *limitador de acesso* nas suas APIs. Por exemplo, você pode querer limitar o uso da API para cada usuário em no máximo 100 chamadas a cada 10 minutos. Se o número de solicitações recebidas por usuário ultrapassar este limite, uma resposta com status 429 (significa "Muitas Requisições") deve ser retornada. -Para prevenir abusos, você deve -considerar a utilização de *limitação de taxa* na suas APIs. Por exemplo, você -pode quere limitar o uso da API para cada usuário para no máximo 100 chamadas -na API a cada 10 minutos. Se o número de solicitações recebidas por um usuário ultrapassar este limite, uma resposta com status 429 (significa "Muitas Requisições") deve ser retornada. +Para habilitar o limitador de acesso, a [[yii\web\User::identityClass|classe de identidade do usuário]] deve implementar [[yii\filters\RateLimitInterface]]. Esta interface requer a implementação de três métodos: -Para habilitar a limitação de taxa, a -[[yii\web\User::identityClass|user identity class]] deve implementar -[[yii\filters\RateLimitInterface]]. Esta -interface requer a implementação de três métodos: +* `getRateLimit()`: retorna o número máximo de pedidos permitidos e o período de tempo (ex., `[100, 600]` significa que pode haver, no máximo, 100 chamadas de API dentro de 600 segundo); +* `loadAllowance()`: retorna o número restante de pedidos permitidos e a hora da última verificação; +* `saveAllowance()`: salva tanto o número restante de requisições e a hora atual. +Você pode usar duas colunas na tabela de usuários para registrar estas informações. Com esses campos definidos, então `loadAllowance()` e `saveAllowance()` podem ser implementados para ler e guardar os valores das duas colunas correspondentes ao atual usuário autenticado. +Para melhorar o desempenho, você também pode considerar armazenar essas informações em um cache ou armazenamento NoSQL. -* `getRateLimit()`: retorna o número -máximo de pedidos permitidos e o período de tempo (ex., `[100, 600]` significa -que pode haver, no máximo, 100 chamadas de API dentro de 600 segundo). -* `loadAllowance()`: retorna o número de -pedidos permitidos restantes e a hora da última verificação . -* `saveAllowance()`: salva tanto o número de -requisições restantes e a hora atual. - -Você pode usar duas colunas na tabela -de usuários para registrar estas informações. Com esses campos definidos, então -`loadAllowance()` e `saveAllowance()` podem ser implementados para ler e -guardar os valores das duas colunas correspondentes ao atual usuário autenticado. -Para melhorar o desempenho, você também pode considerar armazenar essas -informações em um cache ou armazenamento NoSQL. - -Uma vez que a classe identidade -implementa a interface necessária, Yii irá automaticamente usar [[yii\filters\RateLimiter]] -configurada como um filtro da ação para o [[yii\rest\Controller]] realizar a -verificação de limitação de taxa. A limitação de taxa irá lançar uma exceção [[yii\web\TooManyRequestsHttpException]] quando o -limite for excedido. - -Você pode configurar o limitador de -taxa da seguinte forma em suas classes controller REST: +Uma vez que a classe de identidade do usuário estiver com a interface necessária implementada, o Yii automaticamente usará a classe [[yii\filters\RateLimiter]] configurada como um filtro da ação para o [[yii\rest\Controller]] realizar a verificação da limitação do acesso. O limitador de acesso lançará uma exceção [[yii\web\TooManyRequestsHttpException]] quando o limite for excedido. +Você pode configurar o limitador de acesso da seguinte forma em suas classes controller REST: ```php public function behaviors() { - $behaviors = + $behaviors = parent::behaviors(); - $behaviors['rateLimiter']['enableRateLimitHeaders'] + $behaviors['rateLimiter']['enableRateLimitHeaders'] = false; - return $behaviors; + return $behaviors; } ``` -Quando a limitação de taxa está -habilitada, por padrão a cada resposta será enviada com o seguinte cabeçalho -HTTP que contêm a informação atual de limitação de taxa: +Quando o limitador de acesso está habilitado, por padrão a cada resposta será enviada com o seguinte cabeçalho HTTP contendo a informação da atual taxa de limitação: + +* `X-Rate-Limit-Limit`, o número máximo permitido de pedidos em um período de tempo; +* `X-Rate-Limit-Remaining`, o número de pedidos restantes no período de tempo atual; +* `X-Rate-Limit-Reset`, o número de segundos de espera a fim de obter o número máximo de pedidos permitidos. -* `X-Rate-Limit-Limit`, o número -máximo permitido de pedidos com um período de tempo -* `X-Rate-Limit-Remaining`, o número de -pedidos restantes no período de tempo atual -* `X-Rate-Limit-Reset`, o número de segundos -de espera a fim de obter o número máximo de pedidos permitidos +Você pode desativar esses cabeçalhos, configurando [[yii\filters\RateLimiter::enableRateLimitHeaders]] para `false`, como mostrado no exemplo acima. -Você pode desativar esses cabeçalhos, -configurando [[yii\filters\RateLimiter::enableRateLimitHeaders]] para falso, -como mostrado no exemplo acima. - diff --git a/docs/guide-pt-BR/rest-response-formatting.md b/docs/guide-pt-BR/rest-response-formatting.md index 88b8b18..9215d2a 100644 --- a/docs/guide-pt-BR/rest-response-formatting.md +++ b/docs/guide-pt-BR/rest-response-formatting.md @@ -1,22 +1,22 @@ -Formatação de Resposta +Formatando Respostas =================== -Ao manipular um request API RESTful, um aplicação normalmente realiza as seguintes etapas que estão relacionadas com a formatação da resposta: +Ao manipular uma requisição da API RESTful, a aplicação normalmente realiza as seguintes etapas que estão relacionadas com a formatação da resposta: -1. Determinar diversos fatores que podem afetar o formato da resposta, tais como tipo de mídia, linguagem, versão, etc. Este processo também é conhecido como [content negotiation](http://en.wikipedia.org/wiki/Content_negotiation). -2. Converter objetos de recurso em arrays, como descrito na seção [Resources](rest-resources.md). Isto é feito por [[yii\rest\Serializer]]. -3. Converte arrays em uma string no formato como determinado pela etapa de negociação de conteúdo. Isto é feito por [[yii\web\ResponseFormatterInterface|response formatters]] registrado com a propriedade [[yii\web\Response::formatters|formatters]] do `response` [application component](structure-application-components.md). +1. Determinar diversos fatores que podem afetar o formato da resposta, tais como tipo de mídia, idioma, versão, etc. Este processo também é conhecido como [negociação de conteúdo (*content negotiation*)](http://en.wikipedia.org/wiki/Content_negotiation). +2. Converter objetos de recursos em arrays, como descrito na seção [Recursos](rest-resources.md). Isto é feito por [[yii\rest\Serializer]]. +3. Converte arrays em uma string no formato como determinado pela etapa de negociação de conteúdo. Isto é feito pelos [[yii\web\ResponseFormatterInterface|formatadores de respostas]] registrados na propriedade [[yii\web\Response::formatters|formatters]] do [componente de aplicação](structure-application-components.md) `response`. -## Negociação de conteúdo +## Negociação de Conteúdo -Yii suporta negociação de conteúdo através do filtro [[yii\filters\ContentNegotiator]]. A classe base de controller API RESTful [[yii\rest\Controller]] está equipado com este filtro sob o nome de `contentNegotiator`. O filtro fornece negociação de formato de resposta, bem como negociação de idioma. Por exemplo, se um request API RESTful tiver o seguinte cabeçalho, +O Yii suporta a negociação de conteúdo através do filtro [[yii\filters\ContentNegotiator]]. A classe base de controller API RESTful [[yii\rest\Controller]] está equipado com este filtro sob o nome de `contentNegotiator`. O filtro fornece negociação de formato de resposta, bem como negociação de idioma. Por exemplo, se uma requisição da API RESTful tiver o seguinte cabeçalho, ``` Accept: application/json; q=1.0, */*; q=0.1 ``` -ele irá obter uma resposta em formato JSON, como o seguinte: +ele obterá uma resposta em formato JSON, como o seguinte: ``` $ curl -i -H "Accept: application/json; q=1.0, */*; q=0.1" "http://localhost/users" @@ -48,9 +48,9 @@ Content-Type: application/json; charset=UTF-8 ] ``` -Por baixo dos panos, antes de uma ação do controlador API RESTful ser executada, o filtro [[yii\filters\ContentNegotiator]] verificará o `Accept` do cabeçalho HTTP na requisição e definirá o [[yii\web\Response::format|response format]] para `'json'`. Após a ação ser executada e retornar o objeto resultante de recursos ou coleção, [[yii\rest\Serializer]] irá converter o resultado em um array. E finalmente, [[yii\web\JsonResponseFormatter]] irá serializar o array em uma string JSON e incluí-lo no corpo da resposta. +Por baixo dos panos, antes de uma ação do controlador API RESTful ser executada, o filtro [[yii\filters\ContentNegotiator]] verificará o `Accept` do cabeçalho HTTP na requisição e definirá o [[yii\web\Response::format|response format]] para `'json'`. Após a ação ser executada e retornar o objeto resultante de recursos ou coleção, [[yii\rest\Serializer]] converterá o resultado em um array. E finalmente, [[yii\web\JsonResponseFormatter]] irá serializar o array em uma string JSON e incluí-la no corpo da resposta. -Por padrão, APIs RESTful suportam tanto os formatos JSON e XML. Para suportar um novo formato, você deve configurar a propriedade [[yii\filters\ContentNegotiator::formats|formats]] do filtro `contentNegotiator` como o exemplo abaixo em suas classes do controlador da API: +Por padrão, APIs RESTful suportam tanto os formatos JSON quanto XML. Para suportar um novo formato, você deve configurar a propriedade [[yii\filters\ContentNegotiator::formats|formats]] do filtro `contentNegotiator` como mostrado no exemplo a seguir em suas classes do controlador da API: ```php use yii\web\Response; @@ -64,18 +64,16 @@ public function behaviors() ``` -As chaves da propriedade `formats` são os tipos MIME suportados - -The keys of the `formats` property are the supported MIME types, enquanto os valores são os nomes de formato de resposta correspondentes que devem ser suportados em +As chaves da propriedade `formats` são os tipos MIME suportados, enquanto os valores são os nomes de formato de resposta correspondentes que devem ser suportados em [[yii\web\Response::formatters]]. ## Serializando Dados -Como foi descrito acima, [[yii\rest\Serializer]] é a peça central responsável pela conversão de objetos de recurso ou coleções em arrays. Ele reconhece objetos que imolementam a interface [[yii\base\ArrayableInterface]] bem como [[yii\data\DataProviderInterface]]. O primeiro é aplicado principalmente pelos objetos de recurso, enquanto o último se aplica mais a coleções de recursos. +Como foi descrito acima, [[yii\rest\Serializer]] é a peça central responsável pela conversão de objetos de recursos ou coleções em arrays. Ele reconhece objetos que implementam a interface [[yii\base\ArrayableInterface]] bem como [[yii\data\DataProviderInterface]]. O primeiro é aplicado principalmente pelos objetos de recursos, enquanto o último se aplica mais a coleções de recursos. Você pode configurar o serializador, definindo a propriedade [[yii\rest\Controller::serializer]] com um array de configuração. -Por exemplo, às vezes você pode querer ajudar a simplificar o trabalho de desenvolvimento do cliente, incluindo informações de paginação diretamente no corpo da resposta. Para fazê-lo, configure a propriedade [[yii\rest\Serializer::collectionEnvelope]] como abaixo: +Por exemplo, às vezes você pode querer ajudar a simplificar o trabalho de desenvolvimento do cliente, incluindo informações de paginação diretamente no corpo da resposta. Para fazê-lo, configure a propriedade [[yii\rest\Serializer::collectionEnvelope]] como a seguir: ```php use yii\rest\ActiveController; diff --git a/docs/guide-pt-BR/rest-routing.md b/docs/guide-pt-BR/rest-routing.md index bc3fb31..a8b30bd 100644 --- a/docs/guide-pt-BR/rest-routing.md +++ b/docs/guide-pt-BR/rest-routing.md @@ -3,9 +3,9 @@ Roteamento Com as classes de recurso e controller prontas, você pode acessar os recursos utilizando uma URL como `http://localhost/index.php?r=user/create`, semelhante ao que você pode fazer com aplicações Web normais. -Na prática, você geralmente deseja utilizar URLs amigáveis e tirar proveito dos métodos HTTP. +Na prática, normalmente você desejará utilizar URLs amigáveis e tirar proveito dos métodos HTTP. Por exemplo, uma requisição `POST /users` seria o mesmo que a ação `user/create`. -Isto pode ser feito facilmente através da configuração do `urlManager` [application component](structure-application-components.md) na configuração da aplicação conforme mostrado abaixo: +Isto pode ser feito facilmente através da configuração do [componente de aplicação](structure-application-components.md) `urlManager` conforme mostrado a seguir: ```php 'urlManager' => [ @@ -18,7 +18,7 @@ Isto pode ser feito facilmente através da configuração do `urlManager` [appli ] ``` -Em comparação com o gerenciamento de URL para aplicações web, a principal novidade acima é o uso de [[yii\rest\UrlRule]] para rotear requisições API RESTful API. Esta classe especial regra de URL irá criar um conjunto de regras de URL filhas para dar suporte ao roteamento e a criação de URL para o controller especificado. +Em comparação com o gerenciamento de URL para aplicações Web, a principal novidade acima é o uso de [[yii\rest\UrlRule]] para rotear requisições API RESTful. Esta classe especial criará um conjunto de regras de URL filhas para dar suporte ao roteamento e a criação de URL para o controller especificado. Por exemplo, o código acima é mais ou menos equivalente às seguintes regras: ```php @@ -33,7 +33,7 @@ Por exemplo, o código acima é mais ou menos equivalente às seguintes regras: ] ``` -E os seguintes terminais de API são suportados por esta regra: +E as seguintes URLs (também chamadas de *endpoints*) da API são suportados por esta regra: * `GET /users`: lista todos os usuários página por página; * `HEAD /users`: mostrar a informações gerais da listagem de usuários; @@ -42,10 +42,10 @@ E os seguintes terminais de API são suportados por esta regra: * `HEAD /users/123`: mostrar a informações gerais do usuário 123; * `PATCH /users/123` and `PUT /users/123`: atualiza o usuário 123; * `DELETE /users/123`: deleta o usuário 123; -* `OPTIONS /users`: mostrar os metodos suportados pelo terminal `/users`; -* `OPTIONS /users/123`: mostrar os metodos suportados pelo terminal `/users/123`. +* `OPTIONS /users`: exibe os métodos suportados pela URL `/users`; +* `OPTIONS /users/123`: exibe os métodos suportados pela URL `/users/123`. -Você pode configurar as opções `only` e `except` para listar explicitamente que ações são suportadas ou quais ações devem ser desativada, respectivamente. Por exemplo, +Você pode configurar as opções `only` e `except` para listar explicitamente quais ações são suportadas ou quais ações devem ser desativadas, respectivamente. Por exemplo, ```php [ @@ -55,7 +55,7 @@ Você pode configurar as opções `only` e `except` para listar explicitamente q ], ``` -Você também pode configurar `patterns` ou `extraPatterns` para redefinir padrões existentes ou adicionar novos padrões suportados por esta regra. Por exemplo, para acessar a uma nova ação `search` pelo terminal `GET /users/search`, configure a opção `extraPatterns` como a seguir, +Você também pode configurar `patterns` ou `extraPatterns` para redefinir padrões existentes ou adicionar novos padrões suportados por esta regra. Por exemplo, para acessar a uma nova ação `search` pela URL `GET /users/search`, configure a opção `extraPatterns` como a seguir, ```php [ @@ -67,13 +67,13 @@ Você também pode configurar `patterns` ou `extraPatterns` para redefinir padr ] ``` -Você deve ter notado que o controller ID `user` aparece no plural como `users` na extremidade das URLs. Isto acontece porque [[yii\rest\UrlRule]] pluraliza os controller IDs automaticamente na criação de regras de Urls filhas. -Você pode desabilitar este comportamento configurando [[yii\rest\UrlRule::pluralize]] para falso. +Você deve ter notado que o ID `user` de controller aparece no plural como `users` na extremidade das URLs. Isto acontece porque [[yii\rest\UrlRule]] pluraliza os IDs de controllers automaticamente na criação de regras de URLs filhas. +Você pode desabilitar este comportamento configurando [[yii\rest\UrlRule::pluralize]] para `false`. -> Observação: A pluralização dos controller IDs é feita por [[yii\helpers\Inflector::pluralize()]]. O método respeita as regras especiais de pluralização. Por exemplo, a palavra `box` será pluralizada coo `boxes` em vez de `boxs`. +> Observação: A pluralização dos IDs de controllers são feitas pelo método [[yii\helpers\Inflector::pluralize()]]. O método respeita as regras especiais de pluralização. Por exemplo, a palavra `box` será pluralizada para `boxes` em vez de `boxs`. -Caso a pluralização automática não encontre uma opção para a palavra requerida, você pode configurar a propriedade [[yii\rest\UrlRule::controller]] para especificar explicitamente como mapear um nome para ser usado como terminal da URL para um controller ID. Por exemplo, o seguinte código mapeia o nome `u` para o controller ID `user`. +Caso a pluralização automática não encontre uma opção para a palavra requerida, você pode configurar a propriedade [[yii\rest\UrlRule::controller]] para especificar explicitamente como mapear um nome para ser usado como uma URL para um ID de controller. Por exemplo, o seguinte código mapeia o nome `u` para o ID `user` de controller. ```php [ diff --git a/docs/guide-pt-BR/rest-versioning.md b/docs/guide-pt-BR/rest-versioning.md index 8d23117..ceb16f5 100644 --- a/docs/guide-pt-BR/rest-versioning.md +++ b/docs/guide-pt-BR/rest-versioning.md @@ -3,7 +3,7 @@ Versionamento Uma boa API é *versionada*: Mudanças e novos recursos são implementados em novas versões da API em vez de alterar continuamente apenas uma versão. Diferente de aplicações Web, com a qual você tem total controle do código de ambos os lados cliente e servidor, APIs são destinadas a ser utilizadas por clientes além de seu controle. Por esta razão, a compatibilidade (BC) entre as APIs deve ser mantida sempre que possível. Se uma mudança que pode quebrar esta compatibilidade é necessária, você deve introduzi-la em uma nova versão de API e subir o número da versão. Os clientes existentes podem continuar a usar a versão antiga da API; e os clientes novos ou atualizados podem obter a nova funcionalidade na nova versão da API. -> Dica: Consulte [Semantic Versioning](http://semver.org/) Para obter mais informações sobre como projetar números de versão da API. +> Dica: Consulte o artigo [Semantic Versioning](http://semver.org/) para obter mais informações sobre como projetar números de versão da API. Uma maneira comum de implementar versionamento de API é incorporar o número da versão nas URLs da API. Por exemplo, `http://example.com/v1/users` representa o terminal `/users` da API versão 1. @@ -16,7 +16,7 @@ Accept: application/json; version=v1 Accept: application/vnd.company.myapp-v1+json ``` -Ambos os métodos tem seus prós e contras, e há uma série de debates sobre cada abordagem. Abaixo, você verá uma estratégia prática para o controle de versão de API que é uma mistura dos dois métodos: +Ambos os métodos tem seus prós e contras, e há uma série de debates sobre cada abordagem. A seguir, você verá uma estratégia prática para o controle de versão de API que é uma mistura dos dois métodos: * Coloque cada versão principal de implementação da API em um módulo separado cuja identificação é o número de versão principal (ex. `v1`, `v2`). Naturalmente, as URLs da API irão conter os números da versão principal. * Dentro de cada versão principal (e, assim, dentro do módulo correspondente), utilize o cabeçalho `Accept` da requisição HTTP para determinar o número de versão secundária e escrever código condicional para responder às versões menores em conformidade. @@ -84,11 +84,11 @@ Como resultado do código acima, `http://example.com/v1/users` retornará a list Graças aos módulos, o código para diferentes versões principais pode ser bem isolado. Entretanto esta abordagem torna possível a reutilização de código entre os módulos através de classes bases comuns e outros recursos partilhados. -Para lidar com números de subversões, você pode tirar proveito da negociação de conteúdo oferecida pelo behavior [[yii\filters\ContentNegotiator|contentNegotiator]]. O behavior `contentNegotiator` irá configurar a propriedade [[yii\web\Response::acceptParams]] que determinará que versão é suportada. +Para lidar com números de subversões, você pode tirar proveito da negociação de conteúdo oferecida pelo behavior [[yii\filters\ContentNegotiator|contentNegotiator]]. O behavior `contentNegotiator` irá configurar a propriedade [[yii\web\Response::acceptParams]] que determinará qual versão é suportada. Por exemplo, se uma requisição é enviada com o cabeçalho HTTP `Accept: application/json; version=v1`, Após a negociação de conteúdo, [[yii\web\Response::acceptParams]] terá o valor `['version' => 'v1']`. -Com base na informação da versão em `acceptParams`, você pode escrever código condicional em lugares tais como ações, classes de recursos, serializadores, etc. para fornecer a funcionalidade apropriada. +Com base na informação da versão em `acceptParams`, você pode escrever um código condicional em lugares tais como ações, classes de recursos, serializadores, etc. para fornecer a funcionalidade apropriada. Uma vez que subversões por definição devem manter compatibilidades entre si, esperamos que não haja muitas verificações de versão em seu código. De outra forma, você pode precisar criar uma nova versão principal. diff --git a/docs/guide-pt-BR/tutorial-core-validators.md b/docs/guide-pt-BR/tutorial-core-validators.md index 1f4159c..ad1d59c 100644 --- a/docs/guide-pt-BR/tutorial-core-validators.md +++ b/docs/guide-pt-BR/tutorial-core-validators.md @@ -1,14 +1,14 @@ -Validadores do núcleo +Validadores Nativos ================== -Yii fornece um conjunto de validadores do núcleo comumente usados, encontrados principalmente sob o namespace `yii\validators`. Em vez de usar nomes de classe de validador longos, você pode usar *aliases* para especificar o uso desses validadores. Por exemplo, você pode usar o alias `required` para referenciar a classe [[yii\validators\RequiredValidator]]: +O Yii fornece um conjunto de validadores nativos bastante utilizados, encontrados principalmente sob o namespace `yii\validators`. Em vez de usar nomes longos nas classes de validadores, você pode usar *aliases* para especificar o uso desses validadores. Por exemplo, você pode usar o alias `required` para referenciar a classe [[yii\validators\RequiredValidator]]: ```php public function rules() { - return [ - [['email', 'password'], 'required'], - ]; + return [ + [['email', 'password'], 'required'], + ]; } ``` @@ -21,11 +21,11 @@ A seguir, descreveremos o uso principal e as propriedades de cada um desses vali ```php [ - // Verifica se "selected" é 0 ou 1, independentemente do tipo de dados - ['selected', 'boolean'], + // Verifica se "selected" é 0 ou 1, independentemente do tipo de dados + ['selected', 'boolean'], - // verifica se "deleted" é um tipo boolean, e se é verdadeiro ou Falso - ['deleted', 'boolean', 'trueValue' => true, 'falseValue' => false, 'strict' => true], + // verifica se "deleted" é um tipo boolean, e se é verdadeiro ou falso + ['deleted', 'boolean', 'trueValue' => true, 'falseValue' => false, 'strict' => true], ] ``` @@ -36,123 +36,124 @@ Este validador verifica se o valor de entrada é um booleano. - `strict`: se o tipo do valor de entrada deve corresponder ao `trueValue` e `falseValue`. O padrão é `false`. -> Observação: Porque a entrada de dados enviados através de formulários HTML são todos strings, você normalmente deve deixar a propriedade [[yii\validators\BooleanValidator::strict|strict]] como falso. +> Observação: Como a entrada de dados enviados através de formulários HTML são todos strings, normalmente deverá deixar a propriedade [[yii\validators\BooleanValidator::strict|strict]] como `false`. ## [[yii\captcha\CaptchaValidator|captcha]] ```php [ - ['verificationCode', 'captcha'], + ['verificationCode', 'captcha'], ] ``` -Este validador é geralmente usado junto com [[yii\captcha\CaptchaAction]] e [[yii\captcha\Captcha]] para se certificar de que a entrada de dados é igual ao código de verificação exibido pelo widget [[yii\captcha\Captcha|CAPTCHA]]. +Este validador é geralmente usado junto com [[yii\captcha\CaptchaAction]] e [[yii\captcha\Captcha]] para garantir que a entrada de dados seja igual ao código de verificação exibido pelo widget [[yii\captcha\Captcha|CAPTCHA]]. -- `caseSensitive`: se a comparação da verificação de código for case sensitivo. O padrão é falso. -- `captchaAction`: a [rota](structure-controllers.md#routes) correspondente ao [[yii\captcha\CaptchaAction|CAPTCHA action]] que renderiza as imagens. O padrão é `'site/captcha'`. -- `skipOnEmpty`: se a validação pode ser ignorada se a entrada estiver vazia. O padrão é Falso, - o que significa que a entrada é obrigatória. +- `caseSensitive`: se a comparação da verificação de código for case sensitivo. O padrão é `false`. +- `captchaAction`: a [rota](structure-controllers.md#routes) correspondente à [[yii\captcha\CaptchaAction|ação CAPTCHA]] que renderiza as imagens. O padrão é `'site/captcha'`. +- `skipOnEmpty`: se a validação pode ser ignorada se a entrada estiver vazia. O padrão é `false`, +o que significa que a entrada é obrigatória. ## [[yii\validators\CompareValidator|compare]] ```php [ - // valida se o valor do atributo "password" é igual a "password_repeat" - ['password', 'compare'], + // valida se o valor do atributo "password" é igual a "password_repeat" + ['password', 'compare'], - // valida se a idade é maior do que ou igual a 30 - ['age', 'compare', 'compareValue' => 30, 'operator' => '>='], + // valida se a idade é maior do que ou igual a 30 + ['age', 'compare', 'compareValue' => 30, 'operator' => '>='], ] ``` -Este validador compara o valor de entrada especificado com um outro e certificar-se se a sua relação está como especificado pela propriedade `operator`. +Este validador compara o valor de entrada especificado com um outro e certifica se a sua relação está como especificado pela propriedade `operator`. -- `compareAttribute`: o nome do atributo cujo valor deve ser comparado. Quando o validador está sendo usado para validar um atributo, o valor padrão dessa propriedade seria o nome do atributo com o sufixo `_repeat`. Por exemplo, se o atributo que está sendo validado é `password`, Estão esta propriedade será por padrão `password_repeat`. -- `compareValue`: um valor constante com o qual o valor de entrada deve ser comparado. When esta property e `compareAttribute` são especificadas, `compareValue` terá precedência. +- `compareAttribute`: o nome do atributo cujo valor deve ser comparado. Quando o validador está sendo usado para validar um atributo, o valor padrão dessa propriedade seria o nome do atributo com o sufixo `_repeat`. Por exemplo, se o atributo que está sendo validado é `password`, então esta propriedade será por padrão `password_repeat`. +- `compareValue`: um valor constante com o qual o valor de entrada deve ser comparado. Quando esta propriedade e a propriedade `compareAttribute` forem especificadas, a propriedade `compareValue` terá precedência. - `operator`: o operador de comparação. O padrão é `==`, ou seja, verificar se o valor de entrada é igual ao do `compareAttribute` ou `compareValue`. Os seguintes operadores são suportados: - * `==`: verifica se dois valores são iguais. A comparação é feita no modo non-strict. - * `===`: verifica se dois valores são iguais. A comparação é feita no modo strict. - * `!=`: verifica se dois valores NÃO são iguais. A comparação é feita no modo non-strict. - * `!==`: verifica se dois valores NÃO são iguais. A comparação é feita no modo strict. - * `>`: verifica se o valor que está sendo validado é maior do que o valor que está sendo comparado. - * `>=`: verifica se o valor que está sendo validado é maior ou igual ao valor que está sendo comparado. - * `<`: verifica se o valor que está sendo validado é menor do que o valor que está sendo comparado. - * `<=`: verifica se o valor que está sendo validado menor ou igual ao valor que está sendo comparado. + * `==`: verifica se dois valores são iguais. A comparação é feita no modo non-strict. + * `===`: verifica se dois valores são iguais. A comparação é feita no modo strict. + * `!=`: verifica se dois valores NÃO são iguais. A comparação é feita no modo non-strict. + * `!==`: verifica se dois valores NÃO são iguais. A comparação é feita no modo strict. + * `>`: verifica se o valor que está sendo validado é maior do que o valor que está sendo comparado. + * `>=`: verifica se o valor que está sendo validado é maior ou igual ao valor que está sendo comparado. + * `<`: verifica se o valor que está sendo validado é menor do que o valor que está sendo comparado. + * `<=`: verifica se o valor que está sendo validado menor ou igual ao valor que está sendo comparado. ## [[yii\validators\DateValidator|date]] ```php [ - [['from_date', 'to_date'], 'date'], + [['from_date', 'to_date'], 'date'], ] ``` -Este validador verifica se o valor de entrada é uma data, tempo ou data e hora em um formato adequado. Opcionalmente, pode converter o valor de entrada para um UNIX timestamp ou outro formato legível e armazená-lo em um atributo especificado via [[yii\validators\DateValidator::timestampAttribute|timestampAttribute]]. +Este validador verifica se o valor de entrada é uma data, hora ou data e hora em um formato adequado. Opcionalmente, pode converter o valor de entrada para um UNIX timestamp ou outro formato legível e armazená-lo em um atributo especificado via [[yii\validators\DateValidator::timestampAttribute|timestampAttribute]]. -- `format`: o formato date/time que o valor que está sendo validado deve ter. Este pode ser um padrão de data e hora conforme descrito no [ICU manual] (http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax). Alternativamente esta pode ser uma string com o prefixo `php:` representando um formato que pode ser reconhecido pela classe PHP `Datetime`. Por favor, consulte para formatos suportados. Se isso não for definido, ele terá o valor de `Yii::$app->formatter->dateFormat`. Consulte a [[yii\validators\DateValidator::$format|API documentation]] para mais detalhes. +- `format`: o formato date/time que o valor que está sendo validado deve ter. Este pode ser um padrão de data e hora conforme descrito no [ICU manual] (http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax). Alternativamente esta pode ser uma string com o prefixo `php:` representando um formato que pode ser reconhecido pela classe PHP `Datetime`. Por favor, consulte para formatos suportados. Se isso não for definido, ele terá o valor de `Yii::$app->formatter->dateFormat`. Consulte a [[yii\validators\DateValidator::$format|documentação da API]] para mais detalhes. -- `timestampAttribute`: o nome do atributo para que este validador possa atribuir o UNIX timestamp convertido a partir da entrada de data / hora. Este pode ser o mesmo atributo que está sendo validado. Se este for o caso, valor original será substituído pelo valor timestamp após a validação. Veja ["Handling date input with the DatePicker"] (https://github.com/yiisoft/yii2-jui/blob/master/docs/guide/topics-date-picker.md) Para exemplos de uso. +- `timestampAttribute`: o nome do atributo para que este validador possa atribuir o UNIX timestamp convertido a partir da entrada de data / hora. Este pode ser o mesmo atributo que está sendo validado. Se este for o caso, valor original será substituído pelo valor timestamp após a validação. Veja a seção ["Manipulando Datas com DatePicker"] (https://github.com/yiisoft/yii2-jui/blob/master/docs/guide/topics-date-picker.md) para exemplos de uso. -Desde a versão 2.0.4, um formato e fuso horário pode ser especificado para esse atributo utilizando [[yii\validators\DateValidator::$timestampAttributeFormat|$timestampAttributeFormat]] e [[yii\validators\DateValidator::$timestampAttributeTimeZone|$timestampAttributeTimeZone]]. +Desde a versão 2.0.4, um formato e um fuso horário podem ser especificados utilizando os atributos [[yii\validators\DateValidator::$timestampAttributeFormat|$timestampAttributeFormat]] e [[yii\validators\DateValidator::$timestampAttributeTimeZone|$timestampAttributeTimeZone]], respectivamente. - Desde a versão 2.0.4 também é possível definir um timestamp [[yii\validators\DateValidator::$min|minimum]] ou [[yii\validators\DateValidator::$max|maximum]]. -Caso a entrada seja opcional, você também pode querer adicionar um [default value filter](#default) para o validador de data para garantir que entradas vazias sejam armazenadas com `NULL`. De outra forma você pode terminar com datas como `0000-00-00` no seu banco de dados ou `1970-01-01` no campo de entrada de um date picker. +Caso a entrada de dados seja opcional (preenchimento não obrigatório), você também pode querer adicionar um [filtro chamado default](#default) para o validador de data garantir que entradas vazias sejam armazenadas com `NULL`. De outra forma você pode terminar com datas como `0000-00-00` no seu banco de dados ou `1970-01-01` no campo de entrada de um *date picker*. ```php [ - [['from_date', 'to_date'], 'default', 'value' => null], - [['from_date', 'to_date'], 'date'], + [['from_date', 'to_date'], 'default', 'value' => null], + [['from_date', 'to_date'], 'date'], ], ``` + ## [[yii\validators\DefaultValueValidator|default]] ```php [ - // configura "age" para ser null se este for vazio - ['age', 'default', 'value' => null], + // configura "age" para ser null se este for vazio + ['age', 'default', 'value' => null], - // configura "country" para ser "USA" se este for vazio - ['country', 'default', 'value' => 'USA'], + // configura "country" para ser "USA" se este for vazio + ['country', 'default', 'value' => 'USA'], - // atribui "from" e "to" com uma data de 3 dias e 6 dias a partir de hoje, se estiverem vazias - [['from', 'to'], 'default', 'value' => function ($model, $attribute) { - return date('Y-m-d', strtotime($attribute === 'to' ? '+3 days' : '+6 days')); - }], + // atribui "from" e "to" com uma data de 3 dias e 6 dias a partir de hoje, se estiverem vazias + [['from', 'to'], 'default', 'value' => function ($model, $attribute) { + return date('Y-m-d', strtotime($attribute === 'to' ? '+3 days' : '+6 days')); + }], ] ``` Este validador não valida dados. Em vez disso, atribui um valor padrão para os atributos que estão sendo validados caso estejam vazios. -- `value`: o valor padrão ou um PHP callable que retorna o valor padrão que irá ser atribuído aos atributos que estão sendo validados caso estejam vazios. A assinatura do PHP callable deve ser como a seguir, +- `value`: o valor padrão ou um PHP callable que retorna o valor padrão que será atribuído aos atributos que estão sendo validados caso estejam vazios. A assinatura do PHP callable deve ser como a seguir, ```php function foo($model, $attribute) { - // ... computar $value ... - return $value; + // ... computar $value ... + return $value; } ``` -> Observação: Como determinar se um valor está vazio ou não é um tópico separado descrito na seção [Empty Values](input-validation.md#handling-empty-inputs). +> Observação: Como determinar se um valor está vazio ou não é um tópico separado descrito na seção [Valores Vazios](input-validation.md#handling-empty-inputs). ## [[yii\validators\NumberValidator|double]] ```php [ - // checks if "salary" is a double number - ['salary', 'double'], + // verifica se o "salary" é um double + ['salary', 'double'], ] ``` -Este validados verifica se o valor de entrada é um double. É equivalente ao validador [number](#number). +Este validador verifica se o valor de entrada é um double. É equivalente ao validador [number](#number). - `max`: o limite superior do valor (inclusive). Se não configurado, significa que o validador não verifica o limite superior. -- `min`: o limite inferior do valor (inclusive). Se não configurado, significa que o validador não verifica o limite inderior. +- `min`: o limite inferior do valor (inclusive). Se não configurado, significa que o validador não verifica o limite inferior. ## [[yii\validators\EachValidator|each]] @@ -161,14 +162,14 @@ Este validados verifica se o valor de entrada é um double. É equivalente ao va ```php [ - // verifica se todos category 'categoryIDs' são 'integer' - ['categoryIDs', 'each', 'rule' => ['integer']], + // verifica se todas as categorias 'categoryIDs' são 'integer' + ['categoryIDs', 'each', 'rule' => ['integer']], ] ``` Este validador só funciona com um atributo array. Ele valida *todos* os elementos do array com uma regra de validação especificada. No exemplo acima, o atributo `categoryIDs` deve ter um array e cada elemento do array será validado pela regra de validação `integer`. -- `rule`: um array especificando uma regra de validação. O primeiro elemento do array determina o nome da classe ou o alias do validador. O resto dos pares nome-valor no array são usados para configurar o objeto validador. +- `rule`: um array especificando as regras de validação. O primeiro elemento do array determina o nome da classe ou o alias do validador. O restante dos pares nome-valor no array são utilizados para configurar o objeto do validador. - `allowMessageFromRule`: se pretende usar a mensagem de erro retornada pela regra de validação incorporada. Padrão é true. Se for false, ele usará `message` como a mensagem de erro. > Observação: Se o valor do atributo não for um array, a validação será considerada como falha e a `mensagem` será retornada como erro. @@ -178,96 +179,97 @@ Este validador só funciona com um atributo array. Ele valida *todos* os element ```php [ - // verifica se o "email" é um endereço de email válido - ['email', 'email'], + // verifica se o "email" é um endereço de e-mail válido + ['email', 'email'], ] ``` Este validador verifica se o valor de entrada é um endereço de email válido. -- `allowName`: permitir nome no endereço de email (ex. `John Smith `). O padrão é false. -- `checkDNS`, para verificar se o domínio do e-mail existe e tem tanto um A ou registro MX. Esteja ciente de que esta verificação pode falhar devido a problemas de DNS temporários, mesmo se o endereço de e-mail for realmente válido. O padrão é false -- `enableIDN`, se o processo de validação deve verificar uma conta IDN (internationalized domain names). O padrão é false. Note que para usar a validação IDN você deve instalar e habilitar a extensão PHP `intl`, ou uma exceção será lançada. +- `allowName`: permitir nome no endereço de email (ex. `John Smith `). O padrão é false; +- `checkDNS`, para verificar se o domínio do e-mail existe e tem tanto um A ou registro MX. Esteja ciente de que esta verificação pode falhar devido a problemas de DNS temporários, mesmo se o endereço de e-mail for realmente válido. O padrão é false; +- `enableIDN`, se o processo de validação deve verificar uma conta IDN (internationalized domain names). O padrão é false. Observe que para usar a validação IDN você deve instalar e habilitar a extensão PHP `intl`, caso contrário uma exceção será lançada. ## [[yii\validators\ExistValidator|exist]] ```php [ - // a1 precisa existir na coluna representada pelo atributo "a1" - ['a1', 'exist'], + // a1 precisa existir na coluna representada pelo atributo "a1" + ['a1', 'exist'], - // a1 precisa existir, mas seu valor irá usar a2 para verificar a existência - ['a1', 'exist', 'targetAttribute' => 'a2'], + // a1 precisa existir, mas seu valor usará a2 para verificar a existência + ['a1', 'exist', 'targetAttribute' => 'a2'], - // a1 e a2 precisam existir juntos, e ambos receberão mensagem de erro - [['a1', 'a2'], 'exist', 'targetAttribute' => ['a1', 'a2']], + // a1 e a2 precisam existir juntos, e ambos receberão mensagem de erro + [['a1', 'a2'], 'exist', 'targetAttribute' => ['a1', 'a2']], - // a1 e a2 precisam existir juntos, somente a1 receberá mensagem de erro - ['a1', 'exist', 'targetAttribute' => ['a1', 'a2']], + // a1 e a2 precisam existir juntos, somente a1 receberá mensagem de erro + ['a1', 'exist', 'targetAttribute' => ['a1', 'a2']], - // a1 precisa existir, verificando a existência de ambos A2 e A3 (usando o valor de a1) - ['a1', 'exist', 'targetAttribute' => ['a2', 'a1' => 'a3']], + // a1 precisa existir, verificando a existência de ambos A2 e A3 (usando o valor de a1) + ['a1', 'exist', 'targetAttribute' => ['a2', 'a1' => 'a3']], - // a1 precisa existir. Se a1 for um array, então todos os seus elementos devem existir. - ['a1', 'exist', 'allowArray' => true], + // a1 precisa existir. Se a1 for um array, então todos os seus elementos devem existir. + ['a1', 'exist', 'allowArray' => true], ] ``` -Este validador verifica se o valor de entrada pode ser encontrado em uma coluna representada por um atributo [Active Record](db-active-record.md). Você pode usar `targetAttribute` para especificar o atributo [Active Record](db-active-record.md) e `targetClass` a classe [Active Record](db-active-record.md) correspondente. Se você não especificá-los, eles vão receber os valores do atributo e a classe modelo que está sendo validada. +Este validador verifica se o valor de entrada pode ser encontrado em uma coluna representada por um atributo [Active Record](db-active-record.md). Você pode usar `targetAttribute` para especificar o atributo [Active Record](db-active-record.md) e `targetClass` a classe [Active Record](db-active-record.md) correspondente. Se você não especificá-los, eles receberão os valores do atributo e a classe model (modelo) que está sendo validada. Você pode usar este validador para validar uma ou várias colunas (ex., a combinação de múltiplos valores de atributos devem existir). -- `targetClass`: o nome da classe [Active Record](db-active-record.md) que deve ser usada para procurar o valor de entrada que está sendo validado. Se não for configurada, a atual classe do modelo que está sendo validado será usada. +- `targetClass`: o nome da classe [Active Record](db-active-record.md) que deve ser usada para procurar o valor de entrada que está sendo validado. Se não for configurada, a atual classe do model (modelo) que está sendo validado será usada. - `targetAttribute`: o nome do atributo em `targetClass` que deve ser utilizado para validar a existência do valor de entrada. Se não for configurado, será usado o nome do atual atributo que está sendo validado. Você pode utilizar um array para validar a existência de múltiplas colunas ao mesmo tempo. Os valores do array são os atributos que serão utilizados para validar a existência, enquanto as chaves são os atributos cujos valores devem ser validados. Se a chave e o valor forem os mesmos, você pode especificar apenas o valor. -- `filter`: filtro adicional para ser aplicado na consulta DB utilizada para verificar a existência do valor de entrada. Pode ser uma string ou um array representando a condição de consulta adicional (consulte [[yii\db\Query::where()]] formato de condição de consulta), ou uma função anônima com a assinatura `function ($query)`, onde `$query` é o objeto [[yii\db\Query|Query]] que você pode modificar na função. -- `allowArray`: se permitir que o valor de entrada seja um array. Padrão é false. Se esta propriedade for true e a entrada for um array, então, cada elemento do array deve existir na coluna alvo. Observe que essa propriedade não pode ser definida como true se você estiver validando várias colunas configurando `targetAttribute` como um array. +- `filter`: filtro adicional para ser aplicado na consulta do banco de dados utilizada para verificar a existência do valor de entrada. Pode ser uma string ou um array representando a condição da consulta adicional (consulte o formato de condição [[yii\db\Query::where()]]), ou uma função anônima com a assinatura `function ($query)`, onde `$query` é o objeto [[yii\db\Query|Query]] que você pode modificar. +- `allowArray`: se permitir que o valor de entrada seja um array. Padrão é false. Se esta propriedade for definida como true e a entrada for um array, então, cada elemento do array deve existir na coluna destinada. Observe que essa propriedade não pode ser definida como true se você estiver validando várias colunas configurando `targetAttribute` como um array. + ## [[yii\validators\FileValidator|file]] ```php [ - // verifica se "primaryImage" é um arquivo de imagem carregado no formato PNG, JPG ou GIF. - // o tamanho do arquivo deve ser inferior a 1MB - ['primaryImage', 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 1024*1024], + // verifica se "primaryImage" é um arquivo de imagem carregado no formato PNG, JPG ou GIF. + // o tamanho do arquivo deve ser inferior a 1MB + ['primaryImage', 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 1024*1024], ] ``` -Este validador verifica se a entrada é um arquivo enviado válido. +Este validador verifica se o dados de entrada é um arquivo válido. -- `extensions`: uma lista de extensões de nome de arquivo que são permitidos no upload. Pode ser um array ou uma string que consiste em nomes de extensão de arquivos separados por espaço ou vírgula (Ex. "gif, jpg"). Nomes de extensões são case-insensitive. O padrão é null, significa que todas as extensões são permitidas. -- `mimeTypes`: uma lista de tipos de arquivos MIME que são permitidos no upload. Pode ser tanto um array como uma string consiste de tipos de MIME separados per espaço ou virgula (ex. "image/jpeg, image/png"). Nomes de tipos de Mime são case-insensitivo. O padrão é null, significa que todos os tipos de MIME são permitidos. Para mais detalhes, consulte [common media types](http://en.wikipedia.org/wiki/Internet_media_type#List_of_common_media_types). +- `extensions`: uma lista de extensões de arquivos que são permitidos para upload. Pode ser utilizado tanto um array quanto uma string constituída de extensões de arquivos separados por espaços ou por vírgulas (Ex. "gif, jpg"). Os nomes das extensões são case-insensitive. O padrão é null, significa que todas as extensões são permitidas. +- `mimeTypes`: uma lista de tipos de arquivos MIME que são permitidos no upload. Pode ser utilizado tanto um array quanto uma string constituída de tipos MIME separados por espaços ou por virgulas (ex. "image/jpeg, image/png"). Os nomes dos tipos MIME são case-insensitivo. O padrão é null, significa que todos os tipos MIME são permitidos. Para mais detalhes, consulte o artigo [common media types](http://en.wikipedia.org/wiki/Internet_media_type#List_of_common_media_types). - `minSize`: o número mínimo de bytes exigido para o arquivo carregado. O padrão é null, significa não ter limite mínimo. - `maxSize`: o número máximo de bytes exigido para o arquivo carregado. O padrão é null, significa não ter limite máximo. -- `maxFiles`: o número máximo de arquivos que o atributo pode receber. O padrão é 1, ou seja, a entrada deve ser de um único arquivo. Se for maior que 1, então a entrada deve ser um array que consiste em, no máximo `maxFiles` números de arquivos. +- `maxFiles`: o número máximo de arquivos que o atributo pode receber. O padrão é 1, ou seja, a entrada de dados deve ser composto de um único arquivo. Se o `maxFiles` for maior que 1, então a entrada de dados deve ser composto por um array constituído de no máximo `maxFiles` arquivos. - `checkExtensionByMimeType`: verificação da extensão do arquivo por tipo MIME do arquivo. Se a extensão produzido pela verificação do tipo MIME difere da extensão do arquivo carregado, o arquivo será considerado inválido. O padrão é true, o que significa realizar tal verificação. -`FileValidator` é usado junto com [[yii\web\UploadedFile]]. consulte a seção [Uploading Files](input-file-upload.md) para mais informações sobre o upload de arquivos e de uma validação sobre os arquivos carregados. +`FileValidator` é usado junto com [[yii\web\UploadedFile]]. Consulte a seção [Upload de Arquivos](input-file-upload.md) para mais informações sobre o upload de arquivos e de uma validação sobre os arquivos carregados. ## [[yii\validators\FilterValidator|filter]] ```php [ - // trima as entradas "username" e "email" - [['username', 'email'], 'filter', 'filter' => 'trim', 'skipOnArray' => true], - - // normaliza a entrada "phone" - ['phone', 'filter', 'filter' => function ($value) { - // normaliza a entrada phone aqui - return $value; - }], + // trima as entradas "username" e "email" + [['username', 'email'], 'filter', 'filter' => 'trim', 'skipOnArray' => true], + + // normaliza a entrada "phone" + ['phone', 'filter', 'filter' => function ($value) { + // normaliza a entrada phone aqui + return $value; + }], ] ``` Este validador não valida dados. Em vez disso, aplica um filtro no valor de entrada e retorna para o atributo que está sendo validado. -- `filter`: um PHP callback que define um filtro. Pode ser um nome de função global, uma função anônima, etc. A assinatura da function deve ser `function ($value) { return $newValue; }`. Esta propriedade deve ser definida. -- `skipOnArray`: para ignorar o filtro se o valor de entrada for um array. O padrão é false. Observe que se o filtro não puder manipular a entrada de array, você deve configurar esta propriedade como true. De outra forma algum PHP erro deve ocorrer. +- `filter`: um PHP callback que define um filtro. Pode ser um nome de função global, uma função anônima, etc. A assinatura da função deve ser `function ($value) { return $newValue; }`. Esta propriedade deve ser definida. +- `skipOnArray`: para ignorar o filtro se o valor de entrada for um array. O padrão é false. Observe que se o filtro não puder manipular a entrada de array, você deve configurar esta propriedade como true. De outra forma algum erro do PHP deve ocorrer. > Dica: Se você quiser trimar valores de entrada, você deve utilizar o validador [trim](#trim). -> Dica: Existem várias funções PHP que tem a assinatura esperada para o `filter` callback. +> Dica: Existem várias funções PHP que tem a assinatura esperada para o callback do `filter`. > Por exemplo, para aplicar a conversão de tipos (usando por exemplo [intval](http://php.net/manual/en/function.intval.php), > [boolval](http://php.net/manual/en/function.boolval.php), ...) para garantir um tipo específico para um atributo, > você pode simplesmente especificar os nomes das funções do filtro sem a necessidade de envolvê-los em um closure: @@ -282,15 +284,15 @@ Este validador não valida dados. Em vez disso, aplica um filtro no valor de ent ```php [ - // verifica se "primaryImage" é ima imagem válida com as proporções adequadas - ['primaryImage', 'image', 'extensions' => 'png, jpg', - 'minWidth' => 100, 'maxWidth' => 1000, - 'minHeight' => 100, 'maxHeight' => 1000, - ], + // verifica se "primaryImage" é uma imagem válida com as proporções adequadas + ['primaryImage', 'image', 'extensions' => 'png, jpg', + 'minWidth' => 100, 'maxWidth' => 1000, + 'minHeight' => 100, 'maxHeight' => 1000, + ], ] ``` -Este validador verifica se o valor de entrada representa um arquivo de imagem válido. Ele se estende do validador [file](#file) herdando todas as suas propriedades. Além Disso, suporta as seguintes propriedades adicionais específicas para fins de validação de imagem: +Este validador verifica se o valor de entrada representa um arquivo de imagem válido. Por estender o validador [file](#file), ele herda todas as suas propriedades. Além disso, suporta as seguintes propriedades adicionais específicas para fins de validação de imagem: - `minWidth`: a largura mínima da imagem. O padrão é null, significa não ter limite mínimo. - `maxWidth`: a largura máxima da imagem. O padrão é null, significa não ter limite máximo. @@ -302,8 +304,8 @@ Este validador verifica se o valor de entrada representa um arquivo de imagem v ```php [ - // checks if "level" is 1, 2 or 3 - ['level', 'in', 'range' => [1, 2, 3]], + // verifica se o "level" é 1, 2 ou 3 + ['level', 'in', 'range' => [1, 2, 3]], ] ``` @@ -311,17 +313,17 @@ Este validador verifica se o valor de entrada pode ser encontrado entre os valor - `range`: uma lista de determinados valores dentro da qual o valor de entrada deve ser procurado. - `strict`: se a comparação entre o valor de entrada e os valores dados devem ser strict - (o tipo e o valor devem ser identicos). O padrão é false. +(o tipo e o valor devem ser idênticos). O padrão é false. - `not`: se o resultado de validação deve ser invertido. O padrão é false. Quando esta propriedade é definida como true, o validador verifica se o valor de entrada NÃO está entre os valores da lista fornecida. -- `allowArray`: para permitir que o valor de entrada seja um array. quando esta propriedade é marcada como true e o valor de entrada é um array, todos os elementos neste array devem ser encontrados na lista de valores fornecida, ou a validação irá falhar. +- `allowArray`: para permitir que o valor de entrada seja um array. Quando esta propriedade é marcada como true e o valor de entrada é um array, todos os elementos neste array devem ser encontrados na lista de valores fornecida, caso contrário a validação falhará. ## [[yii\validators\NumberValidator|integer]] ```php [ - // verifica se "age" é um inteiro - ['age', 'integer'], + // verifica se "age" é um inteiro + ['age', 'integer'], ] ``` @@ -335,53 +337,55 @@ Este validador verifica se o valor de entrada é um inteiro. ```php [ - // verifica se "username" começa com uma letra e contem somente caracteres - ['username', 'match', 'pattern' => '/^[a-z]\w*$/i'] + // verifica se "username" começa com uma letra e contém somente caracteres + ['username', 'match', 'pattern' => '/^[a-z]\w*$/i'] ] ``` -este validador verifica se o valor de entrada atende a expressão regular especificada. +Este validador verifica se o valor de entrada atende a expressão regular especificada. -- `pattern`: a expressão regular que o valor de entrada deve corresponder. Esta propriedade deve ser configurada, ou uma exceção será lançada. +- `pattern`: a expressão regular que o valor de entrada deve corresponder. Esta propriedade deve ser configurada, caso contrário uma exceção será lançada. - `not`: para inverter o resultado da validação. O padrão é false, significa que a validação terá sucesso apenas se o valor de entrada corresponder ao padrão definido. Se for configurado como true a validação terá sucesso apenas se o valor de entrada NÃO corresponder ao padrão definido. + ## [[yii\validators\NumberValidator|number]] ```php [ - // verifica se "salary" é um number - ['salary', 'number'], + // verifica se "salary" é um number + ['salary', 'number'], ] ``` -este validador verifica se o valor de entrada é um number. É equivalente ao validador [double](#double). +Este validador verifica se o valor de entrada é um number. É equivalente ao validador [double](#double). - `max`: limite máximo (inclusive) do valor. Se não for configurado, significa que não tem verificação de limite máximo. - `min`: o limite mínimo (inclusive) do valor. Se não for configurado, significa que não tem verificação de limite mínimo. + ## [[yii\validators\RequiredValidator|required]] ```php [ - // verifica se ambos "username" e "password" não estão vazios - [['username', 'password'], 'required'], + // verifica se ambos "username" e "password" não estão vazios + [['username', 'password'], 'required'], ] ``` -Este validador verifica de o valor de entrada foi fornecido e não está vazio. +Este validador verifica se o valor de entrada foi fornecido e não está vazio. -- `requiredValue`: o valor desejado que a entrada deve ser. Se não configurado, isso significa que o valor de entrada apenas não deve estar vazio. -- `strict`: para verificar os tipos de dados ao validar um valor. O padrão é false. Quando `requiredValue` não é configurado, se esta propriedade for true, o validador verificará se o valor de entrada não é estritamente nulo; Se esta propriedade for false, o validador irá usar uma regra solta para determinar se o valor está vazio ou não. Quando `requiredValue` está configurado, a comparação entre o valor de entrada e `requiredValue` também irá verificar os tipos de dados se esta propriedade for true. +- `requiredValue`: o valor desejado que a entrada deve ter. Se não configurado, significa que o valor de entrada apenas não deve estar vazio. +- `strict`: para verificar os tipos de dados ao validar um valor. O padrão é false. Quando `requiredValue` não é configurado, se esta propriedade for true, o validador verificará se o valor de entrada não é estritamente nulo; Se esta propriedade for false, o validador usará uma regra solta para determinar se o valor está vazio ou não. Quando `requiredValue` está configurado, a comparação entre o valor de entrada e `requiredValue` também verificará os tipos de dados se esta propriedade for true. -> Observação: Como determinar se um valor está vazio ou não é um tópico separado descrito em [Empty Values](input-validation.md#handling-empty-inputs) section. +> Observação: Como determinar se um valor está vazio ou não é um tópico separado descrito na seção [Valores Vazios](input-validation.md#handling-empty-inputs). ## [[yii\validators\SafeValidator|safe]] ```php [ - // marks "description" to be a safe attribute - ['description', 'safe'], + // marca o "description" como um atributo seguro + ['description', 'safe'], ] ``` @@ -392,19 +396,19 @@ Este validador não executa validação de dados. Em vez disso, ele é usado par ```php [ - // verifica se "username" é uma string cujo tamanho está entre 4 e 24 - ['username', 'string', 'length' => [4, 24]], + // verifica se "username" é uma string cujo tamanho está entre 4 e 24 + ['username', 'string', 'length' => [4, 24]], ] ``` Este validador verifica se o valor de entrada é uma string válida com um determinado tamanho. -- `length`: especifica o limite de comprimento da string de entrada que está sendo validada. Este pode ser especificado em uma das seguintes formas: - * um inteiro: o comprimento exato que a string deverá ter; - * um array de um elemento: o comprimento mínimo da string de entrada (ex. `[8]`). Isso substituirá `min`. - * um array de dois elementos: o comprimento mínimo e máximo da string de entrada (ex. `[8, 128]`). Isso substituirá ambos `min` e `max`. -- `min`: o comprimento mínimo da string de entrada. se não configurado, significa não ter limite para o comprimento mínimo. -- `max`: o comprimento máximo da string de entrada. se não configurado, significa não ter limite para o comprimento máximo. +- `length`: especifica o limite do comprimento da string de entrada que está sendo validada. Este pode ser especificado em uma das seguintes formas: + * um inteiro: o comprimento exato que a string deverá ter; + * um array de um elemento: o comprimento mínimo da string de entrada (ex. `[8]`). Isso substituirá `min`. + * um array de dois elementos: o comprimento mínimo e máximo da string de entrada (ex. `[8, 128]`). Isso substituirá ambos `min` e `max`. +- `min`: o comprimento mínimo da string de entrada. Se não configurado, significa não ter limite para o comprimento mínimo. +- `max`: o comprimento máximo da string de entrada. Se não configurado, significa não ter limite para o comprimento máximo. - `encoding`: a codificação da string de entrada a ser validada. se não configurado, será usado o valor de [[yii\base\Application::charset|charset]] da aplicação que por padrão é `UTF-8`. @@ -412,56 +416,56 @@ Este validador verifica se o valor de entrada é uma string válida com um deter ```php [ - // trima os espaçõs em branco ao redor de "username" e "email" - [['username', 'email'], 'trim'], + // trima os espaços em branco ao redor de "username" e "email" + [['username', 'email'], 'trim'], ] ``` -Este validador não executa validação de dados. Em vez disso, ele vai retirar os espaços em branco ao redor do valor de entrada. Note que se o valor de entrada for um array, ele será ignorado pelo validador. +Este validador não executa validação de dados. Em vez disso, ele vai retirar os espaços em branco ao redor do valor de entrada. Observe que se o valor de entrada for um array, ele será ignorado pelo validador. ## [[yii\validators\UniqueValidator|unique]] ```php [ - // a1 precisa ser único na coluna representada pelo atributo "a1" - ['a1', 'unique'], + // a1 precisa ser único na coluna representada pelo atributo "a1" + ['a1', 'unique'], - // a1 precisa ser único, mas a coluna a2 será usada para verificar a singularidade do valor de a1 - ['a1', 'unique', 'targetAttribute' => 'a2'], + // a1 precisa ser único, mas a coluna a2 será usada para verificar a singularidade do valor de a1 + ['a1', 'unique', 'targetAttribute' => 'a2'], - // a1 e a2 precisam ser únicos, e ambos receberão mensagem de erro - [['a1', 'a2'], 'unique', 'targetAttribute' => ['a1', 'a2']], + // a1 e a2 precisam ser únicos, e ambos receberão mensagem de erro + [['a1', 'a2'], 'unique', 'targetAttribute' => ['a1', 'a2']], - // a1 e a2 precisam ser únicos, mas somente ‘a1’ receberá mensagem de erro - ['a1', 'unique', 'targetAttribute' => ['a1', 'a2']], + // a1 e a2 precisam ser únicos, mas somente ‘a1’ receberá mensagem de erro + ['a1', 'unique', 'targetAttribute' => ['a1', 'a2']], - // a1 precisa ser único verificando a singularidade de ambos a2 e a3 (usando o valor de a1) - ['a1', 'unique', 'targetAttribute' => ['a2', 'a1' => 'a3']], + // a1 precisa ser único verificando a singularidade de ambos a2 e a3 (usando o valor de a1) + ['a1', 'unique', 'targetAttribute' => ['a2', 'a1' => 'a3']], ] ``` -Este validador verifica se o valor de entrada é único na coluna da tabela. Ele só trabalha com atributos do modelo [Active Record](db-active-record.md). Suporta a validação de uma única coluna ou de várias. +Este validador verifica se o valor de entrada é único na coluna da tabela. Ele só trabalha com atributos dos models (modelos) [Active Record](db-active-record.md). Suporta a validação de uma única coluna ou de várias. -- `targetClass`: o nome da classe [Active Record](db-active-record.md) que deve ser usada para procurar o valor de imput que está sendo validado. Se não for configurado, a classe do modelo corrente que está sendo validado será usada. -- `targetAttribute`: o nome do atributo em `targetClass` que deve ser usado para validar a singularidade do valor de entrada. Se não for configurado, este usará o nome do atributo corrente que está sendo validado. Você pode usar um array ta validar a sibgularidáde de várias colunas ao mesmo tempo. Os valores do array são os atributos que serão usados para validar a singularidade, enquanto as cheves do array são os atributos cujos valores serão validados. Se a chave e o valor forem os mesmos, você pode apenas especificar o valor. -- `filter`: filtro adicional para ser aplicado na query DB usada para validar a singularidade do valor de entrada. Este pode ser uma string ou um array representando a condição adicional da query (consulte [[yii\db\Query::where()]] no formato de condição de consulta), ou uma função anônima com a assinatura `function ($query)`, onde `$query` é o objeto [[yii\db\Query|Query]] que você pode modificar na função. +- `targetClass`: o nome da classe [Active Record](db-active-record.md) que deve ser usada para procurar o valor de input que está sendo validado. Se não for configurado, a classe model atual que está sendo validado será usada. +- `targetAttribute`: o nome do atributo em `targetClass` que deve ser usado para validar a singularidade do valor de entrada. Se não for configurado, este usará o nome do atributo atual que está sendo validado. Você pode usar um array para validar a singularidade de várias colunas ao mesmo tempo. Os valores do array são os atributos que serão utilizados para validar a singularidade, enquanto as chaves do array são os atributos cujos valores serão validados. Se a chave e o valor forem os mesmos, você pode apenas especificar o valor. +- `filter`: filtro adicional para ser aplicado na query do banco de dados para validar a singularidade do valor de entrada. Este pode ser uma string ou um array representando a condição adicional da query (consulte o formato de condição [[yii\db\Query::where()]]) ou uma função anônima com a assinatura `function ($query)`, onde `$query` é o objeto [[yii\db\Query|Query]] que você pode modificar na função. ## [[yii\validators\UrlValidator|url]] ```php [ - // verifica se "website" é uma URL válida. Coloca "http://" no atributo "website" - // e ele não tiver um esquema de URI - ['website', 'url', 'defaultScheme' => 'http'], + // verifica se "website" é uma URL válida. Coloca "http://" no atributo "website" + // e ele não tiver um esquema da URI + ['website', 'url', 'defaultScheme' => 'http'], ] ``` -|Este validador verifica se o valor de entrada é uma URL válida. +Este validador verifica se o valor de entrada é uma URL válida. -- `validSchemes`: um array especificando o esquema de URI que deve ser considerada válida. O padrão é `['http', 'https']`, significa que ambos `http` e `https` URLs são considerados como válidos. -- `defaultScheme`: o esquema de URI padrão para ser anexado à entrada, se a parte do esquema não for informada na entrada. O padrão é null, significa que o valor de entrada não será modificado. +- `validSchemes`: um array especificando o esquema da URI que deve ser considerada válida. O padrão é `['http', 'https']`, significa que ambas URLs `http` e `https` são considerados como válidos. +- `defaultScheme`: o esquema padrão da URI para ser anexado à entrada, se a parte do esquema não for informada na entrada. O padrão é null, significa que o valor de entrada não será modificado. - `enableIDN`: se o validador deve ter uma conta IDN (internationalized domain names). O padrão é false. Observe que para usar a validação IDN você tem que instalar e ativar a extenção PHP `intl`, caso contrário uma exceção será lançada. diff --git a/docs/guide-pt-BR/tutorial-yii-integration.md b/docs/guide-pt-BR/tutorial-yii-integration.md index 03e6fd0..f70ca31 100644 --- a/docs/guide-pt-BR/tutorial-yii-integration.md +++ b/docs/guide-pt-BR/tutorial-yii-integration.md @@ -1,22 +1,23 @@ -Trabalhando com códigos de terceiros +Trabalhando com Códigos de Terceiros ============================= De tempos em tempos, você pode precisar usar algum código de terceiro na sua aplicação Yii. Ou você pode querer utilizar o Yii como uma biblioteca em alguns sistemas de terceiros. Nesta seção, vamos mostrar como fazer isto. -Usando bibliotecas de terceiros no Yii +Usando Bibliotecas de Terceiros no Yii ---------------------------------- -Para usar uma biblioteca de terceiros em uma aplicação Yii, você precisa primeiramente certificar-se se as classes na biblioteca estão devidamente incluídas ou se podem ser carregadas por demanda. +Para utilizar bibliotecas de terceiros em uma aplicação Yii, você precisa primeiramente garantir que as classes na biblioteca estão devidamente incluídas ou se podem ser carregadas por demanda. + ### Usando Pacotes Composer -Muitas bibliotecas de terceiros gerênciam suas versões através de pacotes do [Composer](https://getcomposer.org/). Você pode instalar tais bibliotecas realizando os seguintes dois passos: +Muitas bibliotecas de terceiros gerenciam suas versões através de pacotes do [Composer](https://getcomposer.org/). Você pode instalar tais bibliotecas realizando os dois seguintes passos: 1. Modifique o arquivo `composer.json` da sua aplicação e informe quais pacotes Composer você deseja instalar. 2. Execute `composer install` para instalar os pacotes especificados. -As classes nos pacotes composer instalados podem ser carregadas automaticamente usando o autoloader Compositor. Certifique-se que o [script de entrada](structure-entry-scripts.md) da sua aplicação contém as seguintes linhas para instalar o Composer autoloader: +As classes nos pacotes Composer instalados podem ser carregadas automaticamente usando o autoloader do Composer. Certifique-se que o [script de entrada](structure-entry-scripts.md) da sua aplicação contém as seguintes linhas para instalar o autoloader do Composer: ```php // Instala o Composer autoloader @@ -26,13 +27,14 @@ require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); ``` + ### Usando Bibliotecas baixadas Se a biblioteca não foi lançada como um pacote Composer, você deve seguir as instruções de instalação para instalá-la. Na maioria dos casos, você precisará baixar manualmente o arquivo de liberação da biblioteca e descompactá-lo no diretório `BasePath/vendor`, onde `BasePath` representa o [caminho base](structure-applications.md#basePath) da sua aplicação. -Se uma biblioteca possui o seu próprio carregador automático, você pode instalá-la no [script de entrada](structure-entry-scripts.md) of your application. Recomenda-se que a instalação seja feita antes de incluir o arquivo `Yii.php` isto porque a classe autoloader Yii pode ter precedência nas classes de carregamento automático da biblioteca a ser instalada. +Se uma biblioteca possui o seu próprio carregador automático, você pode instalá-la no [script de entrada](structure-entry-scripts.md) de sua aplicação. Recomenda-se que a instalação seja feita antes de incluir o arquivo `Yii.php`. Isto porque a classe autoloader Yii pode ter precedência nas classes de carregamento automático da biblioteca a ser instalada. -Se uma biblioteca não oferece um carregador automático de classe, mas seus nomes seguem o padrão [PSR-4](http://www.php-fig.org/psr/psr-4/), você pode usar a classe de autoloader do Yii para carregar as classes. Tudo que você precisa fazer é apenas declarar um [root alias](concept-aliases.md#defining-aliases) para cada namespace raiz utilizados em suas classes. Por exemplo, Suponha que você tenha instalado uma biblioteca no diretório `vendor/foo/bar`,e as classes de bibliotecas estão sob o namespace raiz `xyz`. Você pode incluir o seguinte código na configuração da sua aplicação: +Se uma biblioteca não oferece um carregador automático de classe, mas seus nomes seguem o padrão [PSR-4](http://www.php-fig.org/psr/psr-4/), você pode usar a classe de autoloader do Yii para carregar as classes. Tudo que você precisa fazer é apenas declarar um [alias](concept-aliases.md#defining-aliases) para cada namespace raiz utilizados em suas classes. Por exemplo, suponha que você tenha instalado uma biblioteca no diretório `vendor/foo/bar` e as classes de bibliotecas estão sob o namespace raiz `xyz`. Você pode incluir o seguinte código na configuração da sua aplicação: ```php [ @@ -43,13 +45,14 @@ Se uma biblioteca não oferece um carregador automático de classe, mas seus nom ``` -Se não for nenhuma das opções acima, é provável que a biblioteca necessite fazer um include PHP com algum caminho específico para localizar corretamente os arquivos das classes. Basta seguir suas instruções sobre como configurar o PHP *include path*. +Se não for nenhuma das opções acima, é provável que a biblioteca necessite fazer um include PHP com algum caminho específico para localizar corretamente os arquivos das classes. Basta seguir as instruções de como configurar o *include path* do PHP. No pior dos casos, quando a biblioteca exige explicitamente a inclusão de cada arquivo de classe, você pode usar o seguinte método para incluir as classes por demanda: * Identificar quais as classes da biblioteca contém. -* Liste as classes e os caminhos dos arquivos correspondentes em `Yii::$classMap` no [script de entrada](structure-entry-scripts.md) da aplicação. Por exemplo, +* Liste as classes e os caminhos dos arquivos correspondentes em `Yii::$classMap` no [script de entrada](structure-entry-scripts.md) da aplicação. Por exemplo: + ```php Yii::$classMap['Class1'] = 'path/to/Class1.php'; Yii::$classMap['Class2'] = 'path/to/Class2.php'; @@ -59,7 +62,7 @@ Yii::$classMap['Class2'] = 'path/to/Class2.php'; Usando o Yii em Sistemas de Terceiros -------------------------------- -Porque Yii fornece muitas características excelentes, algumas vezes você pode querer usar algumas de suas características como suporte ao desenvolvimento ou melhorias em sistemas de terceiros, tais como WordPress, Joomla, ou aplicações desenvolvidas utilizando outros frameworks PHP. Por exemplo, você pode querer utilizar a classe [[yii\helpers\ArrayHelper]] ou usar o recurso de [Active Record](db-active-record.md) em um sistema de terceiros. Para alcançar este objetivo, você primeiramente precisa realizar dois passos: instale o Yii, e o bootstrap Yii. +Como o Yii fornece muitas características excelentes, algumas vezes você pode querer utilizar algumas destas características como suporte ao desenvolvimento ou melhorias em sistemas de terceiros, tais como WordPress, Joomla ou aplicações desenvolvidas utilizando outros frameworks PHP. Por exemplo, você pode querer utilizar a classe [[yii\helpers\ArrayHelper]] ou usar o recurso de [Active Record](db-active-record.md) em um sistema de terceiros. Para alcançar este objetivo, você primeiramente precisa realizar dois passos: instale o Yii, e o bootstrap Yii. Se o sistema em questão utilizar o Composer para gerenciar suas dependências, você pode simplesmente executar o seguinte comando para instalar o Yii: @@ -67,9 +70,9 @@ Se o sistema em questão utilizar o Composer para gerenciar suas dependências, composer require yiisoft/yii2 composer install -O promeiro comando instala o [composer asset plugin](https://github.com/francoispluchino/composer-asset-plugin/) -que permite gerenciar o bower e dependências de pacotes npm através do Composer. Mesmo se você só quer usar a camada de banco de dados ou outros recursos não-ativos relacionados do Yii, isto é necessário para instalar o pacote composer do Yii. -Veja também [section about installing Yii](start-installation.md#installing-via-composer) para mais informações sobre o Composer e solução para os possíveis problemas que podem surgir durante a instalação. +O primeiro comando instala o [Composer asset plugin](https://github.com/francoispluchino/composer-asset-plugin/) +que permite gerenciar o bower e dependências de pacotes npm através do Composer. Mesmo que você apenas queira utilizar a camada de banco de dados ou outros recursos não-ativos relacionados do Yii, isto é necessário para instalar o pacote Composer do Yii. +Veja também a seção [sobre a instalação do Yii](start-installation.md#installing-via-composer) para obter mais informações do Composer e solução para os possíveis problemas que podem surgir durante a instalação. Caso contrário, você pode fazer o [download](http://www.yiiframework.com/download/) do Yii e descompactá-lo no diretório `BasePath/vendor`. @@ -79,26 +82,26 @@ Em seguida, você deve modificar o script de entrada do sistema de terceiros inc require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); $yiiConfig = require(__DIR__ . '/../config/yii/web.php'); -new yii\web\Application($yiiConfig); // Do NOT call run() here +new yii\web\Application($yiiConfig); // NÃO execute o método run() aqui ``` -Como você pode ver, o código de cima é muito semelhante ao que existe no [script de entrada](structure-entry-scripts.md) de uma aplicação Yii típica. A única diferença é que depois que a instância da aplicação é criada, o método `run()` não é chamado. Isto porque chamando `run()`, Yii vai assumir o controle do fluxo das requisições que não é necessário neste caso e já é tratado pela aplicação existente. +Como você pode ver, o código acima é muito semelhante ao que existe no [script de entrada](structure-entry-scripts.md) de uma aplicação típica do Yii. A única diferença é que depois que a instância da aplicação é criada, o método `run()` não é chamado. Isto porque chamando `run()`, Yii vai assumir o controle do fluxo das requisições que não é necessário neste caso e já é tratado pela aplicação existente. -Como na aplicação Yii, você deve configurar a instância da aplicação com base no ambiente de execução do sistema em questão. Por exemplo, para usar o recurso de [Active Record](db-active-record.md), você precisa configurar o [application component](structure-application-components.md) `db` com a configuração de conexão DB usada pelo sistema. +Como na aplicação Yii, você deve configurar a instância da aplicação com base no ambiente de execução do sistema em questão. Por exemplo, para usar o recurso de [Active Record](db-active-record.md), você precisa configurar o [componente da aplicação](structure-application-components.md) `db` com a configuração de conexão do banco de dados utilizada pelo sistema. Agora você pode usar a maioria dos recursos fornecidos pelo Yii. Por exemplo, você pode criar classes Active Record e usá-las para trabalhar com o banco de dados. Usando Yii 2 com Yii 1 ---------------------- + +Se você estava usando o Yii 1 anteriormente, é provável que você tenha uma aplicação rodando com Yii 1. Em vez de reescrever toda a aplicação em Yii 2, você pode apenas querer melhorá-lo usando apenas alguns dos recursos disponíveis no Yii 2. Isto pode ser alcançado seguindo as instuções a seguir. -Se você estava usando o Yii 1 anteriormente, é provável que você tenha uma aplicação rodando com Yii 1. Em lugar de reescrever toda a aplicação em Yii 2, você pode apenas querer melhorá-lo usando alguns dos recursos disponíveis apenas no Yii 2. Isto pode ser conseguido como descrito abaixo. - -> Observação: Yii 2 requer PHP 5.4 ou superior. Você deve se certificar que o seu servidor e a sua aplicação existente suportem isto. +> Observação: Yii 2 requer PHP 5.4 ou superior. Você deve certificar-se que o seu servidor e a sua aplicação suportem estes requisitos. Primeiro, instale o Yii 2 na sua aplicação existente seguindo as instruções dadas na [última subseção](#using-yii-in-others). -segundo, altere o script de entrada da sua aplicação como a seguir, +Segundo, altere o script de entrada da sua aplicação como a seguir, ```php // incluir a classe Yii personalizado descrito abaixo @@ -106,7 +109,7 @@ require(__DIR__ . '/../components/Yii.php'); // configuração para aplicação Yii 2 $yii2Config = require(__DIR__ . '/../config/yii2/web.php'); -new yii\web\Application($yii2Config); // Do NOT call run() +new yii\web\Application($yii2Config); // NÃO execute o método run() aqui // configuração para aplicação Yii 1 $yii1Config = require(__DIR__ . '/../config/yii1/main.php');