Files
yii/docs/guide/pt/basics.view.txt
2011-01-16 14:55:27 +00:00

147 lines
5.4 KiB
Plaintext

Visão
====
Uma visão é um script em PHP contendo, principalmente, elementos da
interface com usuário. Ela pode ter comandos em PHP, mas é recomendado
que tais comandos não alterem dados em modelos e sejam simples. De acordo
com a idéia da separar a lógica da programação, lógicas complexas devem
ser colocadas no controle ou no modelo em vez da visão.
Uma visão tem um nome que é utilizado para identificar seu arquivo de script
no momento da renderização. O nome da visão é o mesmo de seu arquivo.
Por exemplo, a visão `edit` refere-se ao arquivo denominado `edit.php`.
Para renderizar uma visão, execute [CController::render()] informando o
nome da visão. O método irá procurar pelo arquivo correspondente no diretório
`protected/views/ControllerID`.
Dentro do arquivo da visão, podemos acessar a instância do controle a partir
da variável `$this`. Dessa forma, podemos `acessar` qualquer propriedade do controle
utilizando `$this->nomeDaPropriedade` dentro da visão.
Podemos também `inserir` dados na visão da seguinte maneira:
~~~
[php]
$this->render('edit', array(
'var1'=>$value1,
'var2'=>$value2,
));
~~~
No código acima, o método [render()|CController::render] irá extrair os
valores do vetor, passado no segundo parâmetro, para variáveis. Como resultado,
dentro do script da visão poderemos acessar as variáveis locais `$var1` e `$var2`.
Layout
------
O Layout é uma visão especial, utilizada para decorar outras visões. Normalmente
ele contém partes da interface que são comuns entre diversas visões.
Por exemplo, um layout pode conter um cabeçalho e um rodapé e inserir o conteúdo
de uma visão entre eles:
~~~
[php]
......cabeçalho aqui......
<?php echo $content; ?>
......rodapé aqui......
~~~
No trecho acima `$content` contém o conteúdo renderizado da visão.
O Layout é implicitamente aplicado ao executar o método [render()|CController::render].
Por padrão, a visão localizada em `protected/views/layouts/main.php`
é utilizada como layout. No entanto, isso pode ser personalizado modificando a
propriedade [CWebApplication::layout] ou [CController::layout]. Para renderizar
uma visão sem aplicar um layout, utilize o método [renderPartial()|CController::renderPartial].
Widget
------
Um widget é uma instância da classe [CWidget], ou de suas classes derivadas. É um
componente utilizado principalmente para apresentação. Widgets normalmente são
utilizados dentro do código de uma visão para gerar elementos complexos,
porém independentes. Por exemplo, um widget pode ser utilizado para renderizar
um complexo calendário. Widgets adicionam melhor reutilização
na interface com o usuário.
Para utilizar um widget, faça o seguinte na sua visão:
~~~
[php]
<?php $this->beginWidget('path.to.WidgetClass'); ?>
...conteúdo que deve aparecer no corpo do widget...
<?php $this->endWidget(); ?>
~~~
ou
~~~
[php]
<?php $this->widget('path.to.WidgetClass'); ?>
~~~
A última forma apresentada é utilizada quando o widget não necessita de conteúdo.
Os Widgets podem ter seus comportamentos personalizados. Para isso, configure
os valores iniciais de suas propriedades ao executar [CBaseController::beginWidget] ou
[CBaseController::widget]. Por exemplo, quando utilizamos o widget [CMaskedTextField],
podemos especificar a máscara que será utilizada. Para isso, passamos para o método
um vetor onde as chaves são os nomes das propriedades e os valores são os valores
iniciais desejados, como no trecho de código a seguir:
~~~
[php]
<?php
$this->widget('CMaskedTextField',array(
'mask'=>'99/99/9999'
));
?>
~~~
Para definir um novo widget, extenda a classe [CWidget] e sobrescreva os
métodos [init()|CWidget::init] e [run()|CWidget::run].
~~~
[php]
class MyWidget extends CWidget
{
public function init()
{
// esse método é chamado por CController::beginWidget()
}
public function run()
{
// esse método é chamado por CController::endWidget()
}
}
~~~
Assim como um controle, um widget também pode ter uma visão. Por padrão,
os arquivos de visão de um widget estão localizados no diretório `views`, dentro
do diretório onde está localizado o arquivo de classe do widget. Essas visões
podem ser renderizadas executando-se o método [CWidget::render()], assim como
o método de mesmo nome existente no controle. A única diferença entre eles é
que nenhum layout será aplicado a visão do widget. Além disso, nessa view, `$this`
refere-se a instância do widget em vez da instância do controller.
Visão do Sistema (System View)
------------------------------
Visões do sistema são as visões utilizadas pelo Yii para exibir informações
sobre erros e logs. Por exemplo, quando um usuário requisita uma ação ou
controle não existente, o Yii irá lançar uma exceção explicando o erro ocorrido.
Esse erro é exibido utilizando uma visão do sistema.
A nomeclatura das visões do sistema seguem algumas regras. Nomes no formato
`errorXXX` referem-se à visões utilizadas para exibir erros gerados com a exceção
[CHttpException], onde `XXX` é o código do erro. Por exemplo, se uma [CHttpException]
é gerada com o código de erro 404, a visão `error404` será exibida.
O Yii framework já possui um conjunto padrão de visões do sistema, localizadas em
`framework/views`. Elas podem ser personalizadas criando-se visões com o mesmo nome
que as originais em `protected/views/system`.
<div class="revision">$Id: basics.view.txt 2367 2010-08-29 17:29:22Z qiang.xue $</div>