mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-06 16:16:53 +01:00
147 lines
5.4 KiB
Plaintext
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>
|