Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
a27b6e92
Commit
a27b6e92
authored
Sep 05, 2014
by
Alexander Makarov
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4934 from alanwillms/pt_br_start_hello
[ci skip] pt-BR start-hello
parents
155f525e
7180bf8c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
193 additions
and
20 deletions
+193
-20
README.md
docs/guide-pt-BR/README.md
+24
-20
start-hello.md
docs/guide-pt-BR/start-hello.md
+169
-0
No files found.
docs/guide-pt-BR/README.md
View file @
a27b6e92
Guia Definitivo para Yii 2.0
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/
)
.
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
...
@@ -37,11 +38,11 @@ Estrutura de uma Aplicação
*
[
Controllers (Controladores)
](
structure-controllers.md
)
*
[
Controllers (Controladores)
](
structure-controllers.md
)
*
[
Models (Modelos)
](
structure-models.md
)
*
[
Models (Modelos)
](
structure-models.md
)
*
[
Views (Visões)
](
structure-views.md
)
*
[
Views (Visões)
](
structure-views.md
)
*
**TBD**
[
Filtros
](
structure-filter
s.md
)
*
[
Módulos
](
structure-module
s.md
)
*
**TBD**
[
Widgets
](
structure-widget
s.md
)
*
[
Filtros
](
structure-filter
s.md
)
*
**TBD**
[
Módulos
](
structure-module
s.md
)
*
[
Widgets
](
structure-widget
s.md
)
*
[
Assets
](
structure-assets.md
)
*
[
Asset
Bundle
s
](
structure-assets.md
)
*
**TBD**
[
Extensões
](
structure-extensions.md
)
*
[
Extensões
](
structure-extensions.md
)
Tratamento de Requisições
Tratamento de Requisições
...
@@ -51,14 +52,14 @@ Tratamento de Requisições
...
@@ -51,14 +52,14 @@ Tratamento de Requisições
*
**TBD**
[
Rotas
](
runtime-routing.md
)
*
**TBD**
[
Rotas
](
runtime-routing.md
)
*
**TBD**
[
Requisições
](
runtime-requests.md
)
*
**TBD**
[
Requisições
](
runtime-requests.md
)
*
**TBD**
[
Respostas
](
runtime-responses.md
)
*
**TBD**
[
Respostas
](
runtime-responses.md
)
*
**TBD**
[
Se
ç
ões e Cookies
](
runtime-sessions-cookies.md
)
*
**TBD**
[
Se
ss
ões e Cookies
](
runtime-sessions-cookies.md
)
*
[
Análise e Geração de URLs
](
runtime-url-handling.md
)
*
[
Análise e Geração de URLs
](
runtime-url-handling.md
)
*
[
Tratamento de Erros
](
runtime-handling-errors.md
)
*
[
Tratamento de Erros
](
runtime-handling-errors.md
)
*
[
Gerenciamento de Logs
](
runtime-logging.md
)
*
[
Gerenciamento de Logs
](
runtime-logging.md
)
Conceitos Chave
s
Conceitos Chave
---------------
-
---------------
*
[
Componentes
](
concept-components.md
)
*
[
Componentes
](
concept-components.md
)
*
[
Propriedades
](
concept-properties.md
)
*
[
Propriedades
](
concept-properties.md
)
...
@@ -68,7 +69,7 @@ Conceitos Chaves
...
@@ -68,7 +69,7 @@ Conceitos Chaves
*
[
Aliases
](
concept-aliases.md
)
*
[
Aliases
](
concept-aliases.md
)
*
[
Autoloading de Classes
](
concept-autoloading.md
)
*
[
Autoloading de Classes
](
concept-autoloading.md
)
*
[
Service Locator
](
concept-service-locator.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
Trabalhando com Banco de Dados
...
@@ -89,7 +90,7 @@ Coletando Dados de Usuários
...
@@ -89,7 +90,7 @@ Coletando Dados de Usuários
*
[
Criando um Formulário
](
input-forms.md
)
*
[
Criando um Formulário
](
input-forms.md
)
*
[
Validação de Dados
](
input-validation.md
)
*
[
Validação de Dados
](
input-validation.md
)
*
**TBD**
[
Upload
ing
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
)
*
**TBD**
[
Coletando Dados de Múltiplos Modelos
](
input-multiple-models.md
)
...
@@ -101,6 +102,7 @@ Exibindo Dados
...
@@ -101,6 +102,7 @@ Exibindo Dados
*
**TBD**
[
Ordenação
](
output-sorting.md
)
*
**TBD**
[
Ordenação
](
output-sorting.md
)
*
[
Data Providers (Provedores de Dados)
](
output-data-providers.md
)
*
[
Data Providers (Provedores de Dados)
](
output-data-providers.md
)
*
[
Widgets de Dados
](
output-data-widgets.md
)
*
[
Widgets de Dados
](
output-data-widgets.md
)
*
[
Trabalhando com Client Scripts
](
output-client-scripts.md
)
*
[
Temas
](
output-theming.md
)
*
[
Temas
](
output-theming.md
)
...
@@ -109,7 +111,7 @@ Segurança
...
@@ -109,7 +111,7 @@ Segurança
*
[
Autenticação
](
security-authentication.md
)
*
[
Autenticação
](
security-authentication.md
)
*
[
Autorização
](
security-authorization.md
)
*
[
Autorização
](
security-authorization.md
)
*
[
Trabalhando
C
om Senhas
](
security-passwords.md
)
*
[
Trabalhando
c
om Senhas
](
security-passwords.md
)
*
**TBD**
[
Auth Clients
](
security-auth-clients.md
)
*
**TBD**
[
Auth Clients
](
security-auth-clients.md
)
*
**TBD**
[
Melhores Práticas
](
security-best-practices.md
)
*
**TBD**
[
Melhores Práticas
](
security-best-practices.md
)
...
@@ -125,7 +127,7 @@ Cache
...
@@ -125,7 +127,7 @@ Cache
Web Services com RESTful
Web Services com RESTful
--------------------
--------------------
----
*
[
Visão Inicial
](
rest-quick-start.md
)
*
[
Visão Inicial
](
rest-quick-start.md
)
*
[
Recursos
](
rest-resources.md
)
*
[
Recursos
](
rest-resources.md
)
...
@@ -150,9 +152,10 @@ Testes
...
@@ -150,9 +152,10 @@ Testes
------
------
*
[
Visão Geral
](
test-overview.md
)
*
[
Visão Geral
](
test-overview.md
)
*
**TBD**
[
Testes Unitários
](
test-unit.md
)
*
[
Configuração do ambiente de testes
](
test-endvironment-setup.md
)
*
**TBD**
[
Testes Funcionais
](
test-functional.md
)
*
[
Testes Unitários
](
test-unit.md
)
*
**TBD**
[
Testes de Aceitação
](
test-acceptance.md
)
*
[
Testes Funcionais
](
test-functional.md
)
*
[
Testes de Aceitação
](
test-acceptance.md
)
*
[
Fixtures
](
test-fixtures.md
)
*
[
Fixtures
](
test-fixtures.md
)
...
@@ -172,13 +175,14 @@ Tópicos Especiais
...
@@ -172,13 +175,14 @@ Tópicos Especiais
*
[
Modelo de Aplicação Avançada
](
tutorial-advanced-app.md
)
*
[
Modelo de Aplicação Avançada
](
tutorial-advanced-app.md
)
*
[
Construindo uma Aplicação a Partir do Zero
](
tutorial-start-from-scratch.md
)
*
[
Construindo uma Aplicação a Partir do Zero
](
tutorial-start-from-scratch.md
)
*
[
Comandos d
e
Console
](
tutorial-console.md
)
*
[
Comandos d
o
Console
](
tutorial-console.md
)
*
[
Ferramentas de Validação
](
tutorial-core-validators.md
)
*
[
Ferramentas de Validação
Embutidas
](
tutorial-core-validators.md
)
*
[
Internacionalização
](
tutorial-i18n.md
)
*
[
Internacionalização
](
tutorial-i18n.md
)
*
[
Enviando E-mails
](
tutorial-mailing.md
)
*
[
Enviando E-mails
](
tutorial-mailing.md
)
*
[
Ajustes no Desempenho
](
tutorial-performance-tuning.md
)
*
[
Ajustes no Desempenho
](
tutorial-performance-tuning.md
)
*
**TBD**
[
Ambiente de Hospedagem Compartilhada
](
tutorial-shared-hosting.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
Widgets
...
@@ -192,8 +196,8 @@ Widgets
...
@@ -192,8 +196,8 @@ Widgets
*
Menu
*
Menu
*
LinkPager
*
LinkPager
*
LinkSorter
*
LinkSorter
*
[
Bootstrap Widgets
](
bootstrap-widgets.md
)
*
[
Widgets do Bootstrap
](
bootstrap-widgets.md
)
*
**TBD**
[
Jquery UI Widgets
](
jui-widgets.md
)
*
[
Widgets do Jquery UI
](
jui-widgets.md
)
Helpers
Helpers
...
...
docs/guide-pt-BR/start-hello.md
0 → 100644
View file @
a27b6e92
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
```
![
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 <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.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment