Modificar Vista de la Acción View

Cordial Saludo

Estoy dando mis primeros pasos con Yii Framework y he creado mi primer CRUD con el generador automático de código, más veo que la acción actionView


public function actionView($id)

	{

		$this->render('view',array(

			'model'=>$this->loadModel($id),

		));

	}

llama el modelo del registro ya guardado en mi tabla de la BD, pero la llave foránea (de determinada relaciín) la imprime directamente, por lo cual necesito modificar esto, veo que la respectiva vista para imprimir la información del registro se genero el siguiente código:


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

		'data'=>$model,

		'attributes'=>array(

			//'id_ciudad',

			'id_departamento',

			'ciudad',

		),

	)); ?>

por lo cual intente escribir


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

		'data'=>$model,

		'attributes'=>array(

			//'id_ciudad',

			array(

				'name'=>'id_departamento',

				'value'=>CHtml::label(Departamento::model()->find(),'id_departamento','departamento'),

			),

			'ciudad',

		),

	)); ?>

más se impre el siguiente mensaje de error:

Fatal error: Cannot use assign-op operators with overloaded objects nor string offsets in C:\AppServ\www\yii\framework\web\helpers\CHtml.php on line 544

así mismo veo que en la acción mismo se hace referencia a el método loadModel (del mismo controlador):


public function loadModel($id)

	{

		$model=Ciudad::model()->findByPk($id);

		if($model===null)

			throw new CHttpException(404,'The requested page does not exist.');

		return $model;

	}

y en este a su vez se llama el método estático model del modelo, más este método:


public static function model($className=__CLASS__)

	{

		return parent::model($className);

	}

es bastante sencillo y no específica nombres de campos ni arrays ni nada por el estilo, por lo cual no encuentro la manera de como hacer la respectiva modificación para que en el caso de la ciudad no me imprima el id del departamento en el cual está cada ciudad, sino más bien el nombre del departamento, por lo cual me veo en la necesidad de consultarles a ustedes, para saber cómo hacer esto.

Quedo atento a sus comentarios.

Muchas gracias.

Estimado,

Reemplaza la siguiente linea:




'value'=>CHtml::label(Departamento::model()->find(),'id_departamento','departamento'),



Con:




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



Eso debería funcionar. Recuerda que en el post anterior definimos la relación ‘departamento’ que puede ser usada desde una instancia del modelo ciudad en cualquier parte.

Hola Luis Guillermo, dele un vistazo a icrud, Gii-Template-Collection (GTC) o GiiX, son excelentes herramientas que hacen las relaciones automáticamente.

Saludos y éxitos.