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
.
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...... 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().
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:
$this->beginWidget('path.to.WidgetClass'); ...conteúdo que deve aparecer no corpo do widget... $this->endWidget();
ou
$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:
$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.
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
.
Signup or Login in order to comment.