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:

$this->render('edit', array(
    'var1'=>$value1,
    'var2'=>$value2,
));

No código acima, o método 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.

1. 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:

......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(). 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().

2. 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 $this->beginWidget('path.to.WidgetClass'); ?>
...conteúdo que deve aparecer no corpo do widget...
<?php $this->endWidget(); ?>

ou

<?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
$this->widget('CMaskedTextField',array(
    'mask'=>'99/99/9999'
));
?>

Para definir um novo widget, extenda a classe CWidget e sobrescreva os métodos init() e run().

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.

3. 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.

$Id: basics.view.txt 2367 2010-08-29 17:29:22Z qiang.xue $

Be the first person to leave a comment

Please to leave your comment.