Retorno de um dropDownList

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.

Uma vez deu esse erro comigo quando tentei mostrar na tela uma variavel diretamente. Resolvi colocando aspas simples na variavel.

Leandro,

Por que você não cria uma nova tabela no banco de dados com os ID e titulo desses Status? Seria uma boa solução para isso.

Veja se colocando:


'type' => 'raw'

no array do status funciona!

Usando o type => raw não deu certo. Ocorreu o mesmo erro de antes.

Usando aspas simples ou duplas, dá o mesmo erro.

Leandro,

Vou dar uma dica, ai você com suas conclusões, veja se é produtiva.

Na tabela do ALUNO, muda o STATUS para STATUS_ID.

Cria uma nova tabela com nome de STATUS, e cria os campos ID, STATUS.

E faça o relacionamento com a tabela ALUNO, assim você pode resolver futuros problemas.

O primeiro é pode adicionar mais status no sistema, sem precisar abrir o arquivo ou até mesmo o banco de dados.

E também resolve este seu problema de palavras com espaço.