mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-20 00:20:44 +08:00
Merge pull request #4934 from alanwillms/pt_br_start_hello
[ci skip] pt-BR start-hello
This commit is contained in:
@@ -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,14 +52,14 @@ 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)
|
||||
|
||||
|
||||
Conceitos Chaves
|
||||
----------------
|
||||
Conceitos Chave
|
||||
---------------
|
||||
|
||||
* [Componentes](concept-components.md)
|
||||
* [Propriedades](concept-properties.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
|
||||
|
||||
169
docs/guide-pt-BR/start-hello.md
Normal file
169
docs/guide-pt-BR/start-hello.md
Normal file
@@ -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 <a name="creating-action"></a>
|
||||
----------------
|
||||
|
||||
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
|
||||
<?php
|
||||
|
||||
namespace app\controllers;
|
||||
|
||||
use yii\web\Controller;
|
||||
|
||||
class SiteController extends Controller
|
||||
{
|
||||
// ...código existente...
|
||||
|
||||
public function actionSay($message = 'Hello')
|
||||
{
|
||||
return $this->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 <a name="creating-view"></a>
|
||||
-----------------
|
||||
|
||||
[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
|
||||
<?php
|
||||
use yii\helpers\Html;
|
||||
?>
|
||||
<?= Html::encode($message) ?>
|
||||
```
|
||||
|
||||
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 <a name="trying-it-out"></a>
|
||||
--------
|
||||
|
||||
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
|
||||
```
|
||||
|
||||

|
||||
|
||||
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 <a name="summary"></a>
|
||||
------
|
||||
|
||||
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.
|
||||
Reference in New Issue
Block a user