Me Explican En Carraydataprovider

he leido un poco de CArrayDataProvider y es para ayudar a visualizar el contenido de un modelo a como uno quiere? es asi o cual es su finalidad y se me explican como se declara y donde por favor

por que me recomendaron ese para visuarlizar esta tabla

me podria decir como le puedo hacer?

de antemano gracias!

y actualmente me los genera asi

alguien que me pueda orientar por favor! con un ejemplo por favor soy totalmente nueva en yii

me gustaria que fuera

tabla dia1

encabezado fecha, hora0,hora1…

y en la celdas la lectura

CArrayDataProvider es para mostrar (normalmente en un CGridView o un CListView) un listado de datos que están en un Array. (Si es un SQL le sirve CSqlDataProvider, y si es un ActiveRecord entonces le sirve un CActiveDataProvider).

La idea (si se está usando CGridView) es organizar los datos previamente y CGridView se encarga de imprimirlos.

Sería bueno ver el array que está conteniendo los datos para poder ayudarle.

Saludos.

actualmente en otro controller hago las operaciones y cuando le doy create me envia esos datos a la tabla que le mostre

este es el codigo del controller




public function actionCreate() {

		$model = new Configuracion;

			// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


		if (isset($_POST['Configuracion'])) {

			$model -> attributes = $_POST['Configuracion'];

			if ($model -> save()) {

				$fechaActual = date('Y-m-j');

				for ($i = 0; $i <= 23; $i++) {

					//$periodo = $model -> periodo_horas;

					$n = $model -> datos_promedio_movil;

					$dias = $model -> dias_pronostico;

					$variable = $model -> id_variable;

					$lecturas = Lectura::model() -> findAll("id_variable = " . $variable . " and hora_lectura=" . $i . " ORDER By id_lectura DESC LIMIT " . $n);

					//$ultimaLectura = Lectura::model() -> findAll("ORDER By id_lectura DESC LIMIT 1");

					if(count($lecturas)>=$n){

					$n=count($lecturas);

					}$arrayLectura = array();


					foreach ($lecturas as $lectura) {

						array_push($arrayLectura, $lectura -> lectura);

					}


					    for ($j = 0; $j < $dias; $j++) {

					    $modelPronostico = new Pronostico;

						//$fechaDia = strtotime($fechaActual) + (60 * 60 * 24 * $j);

						$fechaDia = strtotime('+'.$j.' day',strtotime($fechaActual));

						 //$fechaDia = date('+'.$j.' day',strtotime($fechaActual));

									

						$promedio = array_sum($arrayLectura)/$n;						

						//$modelPronostico -> id_lectura = $ultimaLectura -> id_lectura;

						$modelPronostico->pronostico = $promedio;

						$modelPronostico->dia = $j;

						$modelPronostico->fecha_pronostico = date('Y-m-j',$fechaDia);

						$modelPronostico->hora_pronostico = $i;

						

						if($modelPronostico->save()===FALSE){

								$this -> redirect(array('view', 'id' => $model -> id_config));

						}

						$ultimo = array_pop($arrayLectura);

						array_push($arrayLectura, $promedio);

						 $listaSimple = array_unique($arrayLectura,$promedio);

 						$listaSimpleFinal = array_values($listaSimple);

					}

				}

				$this -> redirect(array('view', 'id' => $model -> id_config));

			}

		}

		$this -> render('create', array('model' => $model, ));

	}







Hola Dianita,

Leyendo la función, veo que DESPUÉS de guardar se construye un array (Asumo que el que necesita), pero luego redirige a otra página, así que se podría decir que la variable (array) también se pierde.

Así que:

  1. Creo que esa "armazón" del array debería hacerse fuera del "if" que verifica los datos por POST (o incluso ANTES)

  2. Esa variable se debería pasar a la vista "create" para que pueda usarse desde allí y eventualmente cargarse en el CGridView, pues actualmente está cargando el modelo (por eso aparece como le aparece)

  3. Podría enviarnos la vista para echarle un vistazo?

Saludos.