Condicionar Impresión de Estado en la Vista de la Acción actionView

Cordial Saludo

En mi base de datos tengo una tabla "tienda", en la cual manejo un campo estado (No Manejante ó Manejante), el cual almaceno como un número (0 = No manejante y 1 = Manejante) por medio de un dropDownList, más en la vista de la acción "actionView" este número se imprime literal como está en la BD, el siguiente es el código de la vista:


<?php $this->widget('zii.widgets.CDetailView', array(

	'data'=>$model,

	'attributes'=>array(

		//'id_tienda',

		//'id_ciudad',

		'tienda',

			array(

					'name'=>'id_ciudad',

					'value'=>CHtml::encode($model->ciudad->ciudad),

			),

		'codigo',

		'nit',

		'telefono',

		'direccion',

		'estado',

	),

)); ?>

saben ustedes si hay manera de agregarle un condicional ó algo por el estilo al estado (para que se imprima la cadena literal y no el número) ó será que es más recomendable manejar los estados por medio de cadenas literales y no números en la BD?

Quedo atento a sus comentarios.

Muchas gracias.

Buenas!

Deberías tener que usar algo parecido a lo que ya tenés:




array(

'name'=>'id_ciudad',

'value'=>CHtml::encode($model->ciudad->ciudad),

),

Agregás al modelo Tienda algo como:




public function getEstado(){

if($this->nombreParametro)

return 'Manejante';

else

return 'No Manejante';

}

y luego en la vista, lo siguiente:




...

array(

'name'=>'nombreParametro',

'value'=>'$data->Estado',

),



Con respecto a tu pregunta de cómo manejar los datos en la DB, está bien que sea un Boolean, solo que los mostrás de esta manera.

Usá el buscador porque hay varios temas similares.

Espero que te haya sido de utilidad.

Saludos.

Edit:

También podés usar


'value'=>$model->Estado,

pero cuando quieras acceder a cuestiones como


'value'=>$model->idInstancia0->Funcion,

te va a dar error "trying to get property of non object".

Gracias migue, mira mi modelo quedo así:


public function getEstado()

        {

            if($this->estado == 0)

            {

                return 'No Manejante';

            }

            else

            {

                return 'Manejante';

            }

        }

y mi vista así:




<?php $this->widget('zii.widgets.CDetailView', array(

	'data'=>$model,

	'attributes'=>array(

		//'id_tienda',

		//'id_ciudad',

		'tienda',

                array(

                        'name'=>'id_ciudad',

                        'value'=>CHtml::encode($model->ciudad->ciudad),

                ),

		'codigo',

		'nit',

		'telefono',

		'direccion',

		//'estado',

                array(

                    'name'=>'estado',

                    'value'=>$model->getEstado(),

                ),

	),

)); ?>



Luis,

Como nota aparte, te recomiendo utilizar las etiquetas "code" cuando incluyas código en tus publicaciones en el foro, así se facilita la lectura de éstas.

Para utilizarlas basta presionar el ícono "<>" en la interfaz de respuesta/redacción de posts y pegar tu código dentro de las etiquetas.

Intentá escribir el código dentro de los tags "[ code ]" así es más legible.

  1. si ‘estado’ es un boolean, podés hacer



if($this->estado)

o

if(!$this->estado)

  1. La función "mágica" get te ahorra el hecho de poner getEstado() para poder poner directamente Estado.

Lo de ‘$data->Estado’ te lo dije por experiencia de no poder utilizar $model->___ cuando querés hacer uso de una función de la instancia que tenés en relaciones (como te han marcado en otro post, dentro de rules()). Por ejemplo si la tienda tiene un atributo idDuenio en la DB y tenés la relación ‘idDuenio’:




'value'=>$model->idDuenio->Nombre, <-- MAL

'value'=>'$data->idDuenio->Nombre',<-- OK



Ok, muchas gracias, por sus aportes y comentarios, ya modifique los 3 temas que he publicado y les he agregado las etiquetas para diferenciar el código fuente.

Por último les quería hacer otra pregunta ¿saben si existe algún grupo de Yii Framework en español entre los Grupos de Google que sea lo suficientemente activo?, ya que lo he buscado y no encuentro ó ¿habrá algún otro foro de Yii de buena calidad como este?.

La comunidad Yii en español por lo general no es muy activa. Sin embargo no creo que se deba a la cantidad de desarrolladores de habla hispana que usen Yii, pues sé que somos varios. Por lo general optan por publicar en el foro "General Discussion" aunque su inglés no sea tan bueno, porque allá se mueve más la cosa.