From 767af429c2a5960bc3c1f907e0888318b5ee60db Mon Sep 17 00:00:00 2001 From: Alan Willms Date: Fri, 5 Sep 2014 14:49:18 -0300 Subject: [PATCH 1/3] Update guide pt-BR README file --- docs/guide-pt-BR/README.md | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/docs/guide-pt-BR/README.md b/docs/guide-pt-BR/README.md index 66e0b9b..944963d 100644 --- a/docs/guide-pt-BR/README.md +++ b/docs/guide-pt-BR/README.md @@ -1,5 +1,6 @@ Guia Definitivo para Yii 2.0 ============================ + Esse tutorial está disponível sob os [termos da documentação do Yii](http://www.yiiframework.com/doc/terms/). @@ -37,11 +38,11 @@ Estrutura de uma Aplicação * [Controllers (Controladores)](structure-controllers.md) * [Models (Modelos)](structure-models.md) * [Views (Visões)](structure-views.md) -* **TBD** [Filtros](structure-filters.md) -* **TBD** [Widgets](structure-widgets.md) -* **TBD** [Módulos](structure-modules.md) -* [Assets](structure-assets.md) -* **TBD** [Extensões](structure-extensions.md) +* [Módulos](structure-modules.md) +* [Filtros](structure-filters.md) +* [Widgets](structure-widgets.md) +* [Asset Bundles](structure-assets.md) +* [Extensões](structure-extensions.md) Tratamento de Requisições @@ -51,7 +52,7 @@ Tratamento de Requisições * **TBD** [Rotas](runtime-routing.md) * **TBD** [Requisições](runtime-requests.md) * **TBD** [Respostas](runtime-responses.md) -* **TBD** [Seções e Cookies](runtime-sessions-cookies.md) +* **TBD** [Sessões e Cookies](runtime-sessions-cookies.md) * [Análise e Geração de URLs](runtime-url-handling.md) * [Tratamento de Erros](runtime-handling-errors.md) * [Gerenciamento de Logs](runtime-logging.md) @@ -68,7 +69,7 @@ Conceitos Chaves * [Aliases](concept-aliases.md) * [Autoloading de Classes](concept-autoloading.md) * [Service Locator](concept-service-locator.md) -* [Injeção de Dependência](concept-di-container.md) +* [Container de Injeção de Dependência](concept-di-container.md) Trabalhando com Banco de Dados @@ -89,7 +90,7 @@ Coletando Dados de Usuários * [Criando um Formulário](input-forms.md) * [Validação de Dados](input-validation.md) -* **TBD** [Uploading de Arquivos](input-file-upload.md) +* **TBD** [Upload de Arquivos](input-file-upload.md) * **TBD** [Coletando Dados de Múltiplos Modelos](input-multiple-models.md) @@ -101,6 +102,7 @@ Exibindo Dados * **TBD** [Ordenação](output-sorting.md) * [Data Providers (Provedores de Dados)](output-data-providers.md) * [Widgets de Dados](output-data-widgets.md) +* [Trabalhando com Client Scripts](output-client-scripts.md) * [Temas](output-theming.md) @@ -109,7 +111,7 @@ Segurança * [Autenticação](security-authentication.md) * [Autorização](security-authorization.md) -* [Trabalhando Com Senhas](security-passwords.md) +* [Trabalhando com Senhas](security-passwords.md) * **TBD** [Auth Clients](security-auth-clients.md) * **TBD** [Melhores Práticas](security-best-practices.md) @@ -125,7 +127,7 @@ Cache Web Services com RESTful --------------------- +------------------------ * [Visão Inicial](rest-quick-start.md) * [Recursos](rest-resources.md) @@ -150,9 +152,10 @@ Testes ------ * [Visão Geral](test-overview.md) -* **TBD** [Testes Unitários](test-unit.md) -* **TBD** [Testes Funcionais](test-functional.md) -* **TBD** [Testes de Aceitação](test-acceptance.md) +* [Configuração do ambiente de testes](test-endvironment-setup.md) +* [Testes Unitários](test-unit.md) +* [Testes Funcionais](test-functional.md) +* [Testes de Aceitação](test-acceptance.md) * [Fixtures](test-fixtures.md) @@ -172,13 +175,14 @@ Tópicos Especiais * [Modelo de Aplicação Avançada](tutorial-advanced-app.md) * [Construindo uma Aplicação a Partir do Zero](tutorial-start-from-scratch.md) -* [Comandos de Console](tutorial-console.md) -* [Ferramentas de Validação](tutorial-core-validators.md) +* [Comandos do Console](tutorial-console.md) +* [Ferramentas de Validação Embutidas](tutorial-core-validators.md) * [Internacionalização](tutorial-i18n.md) * [Enviando E-mails](tutorial-mailing.md) * [Ajustes no Desempenho](tutorial-performance-tuning.md) * **TBD** [Ambiente de Hospedagem Compartilhada](tutorial-shared-hosting.md) -* [Ferramentas de Templates](tutorial-template-engines.md) +* [Ferramentas de Template](tutorial-template-engines.md) +* [Utilização com Códigos de Terceiros](tutorial-yii-integration.md) Widgets @@ -192,8 +196,8 @@ Widgets * Menu * LinkPager * LinkSorter -* [Bootstrap Widgets](bootstrap-widgets.md) -* **TBD** [Jquery UI Widgets](jui-widgets.md) +* [Widgets do Bootstrap](bootstrap-widgets.md) +* [Widgets do Jquery UI](jui-widgets.md) Helpers From bcc0ad72facdcce5a1c5cba029512e4f5ef27afa Mon Sep 17 00:00:00 2001 From: Alan Willms Date: Fri, 5 Sep 2014 15:46:56 -0300 Subject: [PATCH 2/3] Translate guide/start-hello into pt-BR --- docs/guide-pt-BR/start-hello.md | 169 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 docs/guide-pt-BR/start-hello.md diff --git a/docs/guide-pt-BR/start-hello.md b/docs/guide-pt-BR/start-hello.md new file mode 100644 index 0000000..35c34c2 --- /dev/null +++ b/docs/guide-pt-BR/start-hello.md @@ -0,0 +1,169 @@ +Dizendo "Hello World" +===================== + +Esta seção descreve como criar uma nova página de "Hello World" em sua aplicação. +Para atingir este objetivo, você criará uma [ação](structure-controllers.md#creating-actions) +(action) e uma [visão](structure-views.md) (view): + +* A aplicação enviará a requisição de página para a ação +* e a ação por sua vez renderizará a view que mostra as palavras "Hello World" + para o usuário final. + +Através deste tutorial, você aprenderá as seguintes três coisas: + +1. Como criar uma [ação](structure-controllers.md) para responder às requisições, +2. como criar uma [visão](structure-views.md) para compor o conteúdo da resposta, e +3. como uma aplicação envia as requisições para as [ações](structure-controllers.md#creating-actions). + + +Criando uma Ação +---------------- + +Para a tarefa "Hello", você criará uma [ação](structure-controllers.md#creating-actions) +`say` que lê um parâmetro `message` da requisição e exibe essa mensagem de volta +para o usuário. Se a requisição não fornecer um parâmetro `message`, a ação +exibirá a mensagem padrão "Hello". + +> Info: [Ações](structure-controllers.md#creating-actions) são os objetos aos + quais os usuários podem se referir diretamente para execução. As ações são + agrupadas em [controladores](structure-controllers.md) (controllers). O resultado + da execução de uma ação é a resposta que o usuário final receberá. + +As ações devem ser declaradas em [controladores](structure-controllers.md). Por +motivo de simplicidade, você pode declarar a ação `say` na classe já existente +`SiteController`. Este controlador está definido no arquivo `controllers/SiteController.php`. +Segue aqui o início da nova ação: + +```php +render('say', ['message' => $message]); + } +} +``` + +No código acima, a ação `say` está definida como um método chamado `actionSay` +na classe `SiteController`. O Yii usa o prefixo `action` para diferenciar métodos +de ações de métodos que não são de ações em uma classe de controlador. O nome +após o prefixo `action` é mapeado para o ID da ação. + +Quando se trata de dar nome às suas ações, você deveria entender como o Yii +trata os IDs de ações. Os IDs das ações são sempre referenciados em minúsculo. +Se o ID de uma ação necessitar de múltiplas palavras, elas serão concatenadas +por hífens (por exemplo, `create-comment`). Os nomes de métodos de ações são mapeados +para os IDs das ações removendo-se os hífens dos IDs, colocando em maiúsculo a +primeira letra de cada palavra, e prefixando o resultado com `action`. Por exemplo, +o ID de ação `create-comment` corresponde ao método de ação `actionCreateComment`. + +O método de ação no nosso exemplo recebe um parâmetro `$message`, cujo valor +padrão é "Hello" (exatamente da mesma forma que você define um valor padrão para + qualquer argumento de função ou método no PHP). Quando a aplicação recebe a +requisição e determina que a ação `say` é responsável por tratar a requisição, +a aplicação alimentará este parâmetro com o parâmetro de mesmo nome encontrado +na requisição. Em outras palavras, se a requisição inclui um parâmetro `message` +com o valor `"Goodbye"`, a variável `$message` na ação receberá esse valor. + +Dentro do método da ação, [[yii\web\Controller::render()|render()]] é chamado +para renderizar um arquivo de [visão](structure-views.md) chamado `say`. O +parâmetro `message` também é passado para a visão de modo que ele possa ser usado +ali. O resultado da renderização é retornado pelo método da ação. Esse resultado +será recebido pela aplicação, e exibido para o usuário final no navegador (como +parte de uma págian HTML completa). + + +Criando uma Visão +----------------- + +[Visões](structure-views.md) são scripts que você escreve para gerar o conteúdo +de uma resposta. Para a tarefa "Hello", você criará uma visão `say` que imprime o +parâmetro `message` recebido do método da ação, e passado pela ação para a visão: + +```php + + +``` + +A visão `say` deve ser salva no arquivo `views/site/say.php`. Quando o método +[[yii\web\Controller::render()|render()]] é chamado em uma ação, ele procurará +um arquivo PHP chamado de `views/IDdoController/NomeDaView.php`. + +Perceba que no código acima o parâmetro `message` é [[yii\helpers\Html::encode()|codificado como HTML]] +antes de ser impresso. Isso é necessário, já que o parâmetro vem de um usuário final, +tornando-o vulnerável a [ataques de cross-site scripting (XSS)](http://en.wikipedia.org/wiki/Cross-site_scripting) +onde coloca-se código JavaScript malicioso no parâmetro. + +Naturalmente, você pode colocar mais conteúdo na visão `say`. O conteúdo pode consistir +de tags HTML, texto puro, ou até mesmo instruções de PHP. De fato a visão `say` é +apenas um script PHP que é executado pelo método [[yii\web\Controller::render()|render()]]. +O conteúdo impresso pelo script da visão será retornado à aplicação como o resultado +da resposta. A aplicação, por sua vez, retornará este resultado para o usuário final. + + +Testando +-------- + +Após criar a ação e a visão, você pode acessar a nova página através da seguinte URL: + +``` +http://hostname/index.php?r=site/say&message=Hello+World +``` + +![Hello World](images/start-hello-world.png) + +Esta URL resultará em uma página exibindo "Hello World". Esta página compartilha +o mesmo cabeçalho e rodapé das outras páginas da aplicação. + +Se você omitir o parâmetro `message` na URL, você veria a página exibindo somente +"Hello". Isso é porque `message` é passado como um parâmetro para o método `actionSay()`, +e quando ele é omitido, o valor padrão `"Hello"` será usado ao invés dele. + +> Info: A nova página compartilha o mesmo cabeçalho e rodapé de outras páginas + porque o método [[yii\web\Controller::render()|render()]] irá automaticamente + incluir o resultado da visão `say` em um [layout](structure-views.md#layouts) + que neste caso está localizado em `views/layouts/main.php`. + +O parâmetro `r` na URL acima requer mais explicação. Ele significa [rota](runtime-routing.md), +um ID abrangente e único de uma aplicação que se refere a uma ação. O formato da rota +é `IDdoController/IDdaAction`. Quando a aplicação recebe uma requisição, ela +verificará este parâmetro, usando a parte `IDdoController` para determinar qual +classe de controlador deve ser instanciada para tratar a requisição. Então o +controlador usará a parte `IDdaAction` para determinar qual ação deverá ser +instanciada para fazer o trabalho. No caso deste exemplo, a rota `site/say` será +resolvida como a classe de controlador `SiteController` e a ação `say`. Como +resultado, o método `SiteController::actionSay()` será chamado para tratar a requisição. + +> Info: Assim como as ações, os controladores também possuem IDs que os identificam + de maneira única em uma aplicação. Os IDs de controladores seguem as mesmas regras + de nomenclatura que os IDs de ações. Os nomes das classes de controlllers + derivam dos IDs de controladores removendo-se os hífens dos IDs, convertendo a + primeira letra de cada palavra em maiúscula, e adicionando o sufixo `Controller`. + Por exemplo, o ID de controlador `post-comment` corresponde ao nome de classe + de controlador `PostCommentController`. + + +Resumo +------ + +Nesta seção, você tocou as partes do controlador (controller) e da visão (view) +do padrão de projeto MVC. Você criou uma ação (action) como parte de um controlador +para tratar uma requisição específica. E você também criou uma visão para compor +o conteúdo da resposta. Neste exemplo simples acima, nenhum modelo (model) foi +utilizado, já que os único dado sendo exibido foi o parâmetro `message`. + +Você também aprendeu sobre as rotas no Yii, que agem como a ponte entre as +requisições do usuário e as ações do controlador. + +Na próxima seção, você aprenderá como criar um modelo e adicionar uma nova +página contendo um formulário HTML. From 7180bf8c360ae7aa5364a5995231c2922f379c4f Mon Sep 17 00:00:00 2001 From: Alan Willms Date: Fri, 5 Sep 2014 15:47:33 -0300 Subject: [PATCH 3/3] Small fix in pt-br guide/README --- docs/guide-pt-BR/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guide-pt-BR/README.md b/docs/guide-pt-BR/README.md index 944963d..d932b9f 100644 --- a/docs/guide-pt-BR/README.md +++ b/docs/guide-pt-BR/README.md @@ -58,8 +58,8 @@ Tratamento de Requisições * [Gerenciamento de Logs](runtime-logging.md) -Conceitos Chaves ----------------- +Conceitos Chave +--------------- * [Componentes](concept-components.md) * [Propriedades](concept-properties.md)