redirect

Hola a todos,

voy probando con Yii y tengo una duda.

porque este redirect no me funciona después en un edit:


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

solo me funciona así:


$this->redirect('../view/'.$model->id));

tengo la versión 1.1.10 de Yii

no se si tiene que ver algo con esto o estoy haciendo algo mal

Muchas gracias de antemano.

hola,

para invocar una vista dentro de un action de un controller es: render, no redirect.

$this->render(‘view’, array(‘id’=>$model->id));

si tu quisieras llamar a redirect, seria para algo como:

$this->redirect(‘index.php?r=tucontroller/update&id=12’);

EL RENDER/VIEW funciona asi:

ejemplo, tienes

[list=1][]un modelo llamado Orden, en /protected/models/orden.php.[]una controladora: /protected/controllers/orden.php[*]una vista: /protected/views/orden/vista.php[/list]

cuando tu llamas a

[font="'Courier New"][size=“3”][color="#0000ff"]index.php?r=orden/vista&id=1[/color][/size][/font]

lo que sucede internamente es esto:

[list=1][*]root/index.php recibe un GET, para ir a la controladora ORDEN ([color="#000080"]protected/controllers/orden.php[/color]) y buscar la funcion:

public function actionVista($id) {

// codigo…

}[]se invoca la funcion actionVista, ella espera tener en la URL el parametro ID, porque se o pusiste en los argumentos de la funcion ($id)[]el actionVista debera cargar el modelo, de: [color="#000080"]/protected/models/orden.php, asi:[/color][list=1][][color="#000080"]$model = Orden::model()->findByAttributes(array(‘idorden’=>$id));[/color][/list][]el actionVista indicara renderizar la vista: [color="#000080"]protected/views/orden/vista[/color][list=1][]asi: [color="#000080"]$this->render(‘vista’, array(‘model’=>$model));[/color][list=1][]donde: this, es el apuntador a la controladora: orden instanciada por Yii framework para ti por el archivo root index.php[]‘vista’, es el nombre del archivo a conseguir en: /protected/views/orden/vista.php[]listo.[/list][/list][/list]

Deberás echas una lectura mas profunda a Yii, la consigues aqui mismo en el sitio web, mira como esta hecha la aplicacion de inicio que crea el yiic.bat

A la funcion redirect hay que pasarle la URL.

Lo que vos le envias es un array.

Fijate de poner así:




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



Lo cual normaliza la URL.

Muchas gracias, es justo lo que necesitaba :)

gracias por aclararme esto ;)

Saludos

Como hago para enviar dos o mas variables por referencia en usando redirect??? por ejemplo

$this->redirect(array(‘view_numeros’,‘num’=>$num, ‘error’=>$error));

asino me funciona probe tambien

$this->redirect(array(‘view’,array(‘num’=>$num, ‘error’=>$error)));

y tampoco como puedo hacer para pasar las variables num y error a la vista????

Hola, la llamada a redirect es de la siguiente forma:

$this->redirect(‘ruta’); (ruta = ‘controlador/accion?parametro1=valor1&parametro2=valor2’)

u otra opción sería

$this->redirect(array(‘controlador/accion’, ‘nombreParametro1’=>‘valorParametro1’, ‘nombreParametro2’=>‘valorParametro2’, …));

Con lo que si con ninguna de las dos formas anteriores consigues pasar los parámetros, entonces el problema está en el controlador al que intentas llamar.

Yo estoy con el mismo problema y o me funciona ningun metodo que q visto en los foros tengo que añadir una configuración espcial o algo?