Estou migrando um site de java para PHP com Yii. Eu tenho inúmeros filters que carregam coisas que são comuns no meu site (é um site, não um sistema). Para que a action possa ser carregada, eu preciso buscar coisas no banco (ou cache) antes da action ocorrer, para isso eu tenho filtros, porém, uma vez tendo esse dado carregado, como eu posso manda-lo para a action para que a mesma possa usar ??
Acho que entendi o que vc quer fazer, acredito que a melhor forma seria setar uma variável global no modelo e definir o valor dela com um behavior.
segue um exemplo:
no modelo
class MyModel extends CActiveRecord
{
var $variavelb;
...
//neste behavior a variavel vai ser filtrada todas as vezes que a variavel for consultada do banco
public function afterFind(){
//levando em consideração q variavela eh um campo na base de dados
$this->variavelb = $this->myfilter($this->variavela);
}
function myfilter($variavel){
return $variavel + 1;
}
}
no controlador
class SiteController extends Controller {
public function actionIndex() {
$model = MyModel::model()->findAll();
$this->render('index', $model);
}
}
e finalmente o view
<?php
foreach ($model as $rows) {
echo $rows->variavelb;
}
?>
Desta forma, cada vez que um registro for lido a variável será transformada e jogada para uma nova variável e vc pode ler ela como um novo campo com maior praticidade.