Meu problema é o seguinte: criei o CRUD e na view Admin exite um campo onde substituí o textField por um dropDownList. Dentro do modelo gerei um método para popular o dropDownList e outro para receber o valor numérico (int) do campo e exibir o em forma de texto (string) na coluna correspondente. Ok, funcionou! só que tem um detalhe que não entendi ainda. Se na string de retorno do método getStatus eu coloco um espaço ele dá pau! Funciona desde que não haja espaço entre as palavras na string de retorno. Bizarro! Nem adianta colocar ! Meu código é esse aí:
View (admin):
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->search(),
'columns'=>array(
'ID',
'ALUNO_ID',
'ALUNO_REGISTRO',
array(
'name'=>'STATUS',
'value'=>certificados_online::getStatus($model->STATUS),
'filter'=>CHtml::dropDownList('certificados_online[STATUS]', $model->STATUS, certificados_online::status())
)
Model:
public function status()
{
return array(
1=>'Impressos',
2=>'Assinatura',
3=>'Enviados'
);
}
public function getStatus($status)
{
switch($status){
case 1:
return 'Impresso';
break;
case 2:
return 'Assinatura';
break;
case 3:
return 'Enviado';
break;
}
}
Veja o método getStatus, no case 2 o retorno é ‘Assinatura’, daí funciona, mas se eu colocar por exemplo ‘Pronto para assinatura’ dá o seguinte erro:
Parse error: syntax error, unexpected T_STRING in C:\sites\yii\framework\base\CComponent.php(607) : eval()'d code on line 1
Este erro aparece no grid, no primeiro registro da coluna após o filter. Não é excesso de caracteres nem caracterires especiais. O único caracter que ocorre o erro é o espaço. Já tentei encodar em utf8 e também não deu certo.