Mas dá um erro na aplicação com a mensagem de que a variável $cidades não existe, mesmo ela estando setada com o objeto Cidades::model()->findAll(); no controller.
Comprei um livro sobre Yii e só encontrei o procedimento para renderizar as informações nas Views.
Sendo assim, é possível mostrar dados na template principal ?
<?php
//Basta salvar o Widget. Eis o caminho protected/components/CidadeWidget.php
class CidadeWidget extends CWidget
{
public function run()
{
$this->renderContent();
}
protected function renderContent()
{
$cidades = new Cidade;
$this->render('listar_cidade',array('cidade'=>$cidades));
}
}
?>
<?php
//Esse código vai no template, para chamar o Widget:
$this->widget('CidadeWidget');
?>
Bom até onde eu sei todos templates, com excessão do layout padrão(layouts/main.php) dá pra exibir dados sem usar widgets.
Mais no seu caso o widgets cai bem, por que é feito 1 consulta só, ai você não precisa ficar adicionado a consulta em cada action, se quizer pode colocar essa consulta da cidades em cache.
Eu poderia usar esse recurso para colocar várias consultas de models diferentes em um único arquivo?
Explicando:
No site o index usa o padrão do Yii, ou seja, controller/DefaultController.php que por sua vez chama o método actionIndex(), que chama views/site/index.php
Nesse arquivo teria todas as consultas que quero exibir no index.php
No total eu teria 7 Widgets e um + avançado que ñ sei se daria para usar o scope pois leria da msm tabela mas traria 3 resultados com parâmetros diferentes.
Ou existe oma forma mais aconselhável de fazer isso?