abrir nueva pestaña y/o pagina

Hola

quisiera mostrar los reportes del sistema en una nueva pagina y/o pestaña (me gustaría saber las dos formas)

encontre en el cookbookhttp://www.yiiframework.com/doc/cookbook/48/ el ejemplo 4

pero se hace desde la vista

hay alguna forma de hacerlo desde el controlador?

saludos y gracias

Hasta donde entiendo no…

La idea del controlador es que estas respondiendo a la llamada (request) actual.

Eso genera un html de resultado (el view).

En el view vos tenes un link con target="_blank" (eso es lo que explica el cookbook 48)

Pero tenes que tenes en cuenta un par de cosas mas…

Podes usar javascritp para abrir una ventana aparte (eso tambien lo haria en la vista)

El target="_blank" tiene a desaparecer en los proximos estandares.

O podes usar directamente "dialog boxes" en jquery (para my mucho mejor)

Un ejemplo esta en la pagina de jquery.

jQuery UI Dialog

Espero haberte ayudado.

ok, desde el controlador no puedo pasarle ningun parametro en el render para que me habra la pagina en una nueva ventana

que tengo que modificar en el template (tengo uno para reportes)

para que me habra una ventana nueva siempre?

un ejemplo me vendria bien, porque de js no se mucho

saludos

En el controlador podes pasar todos los parametros que quieras. Eso si es valido.




$this->render('la_vista',array('modelo'=>$model,'otroparamtro'=>true, etc....));



en la vista




if ($otroparametro){

   // Hacer algo

}  else {

   // Otra cosa

}



creo que quiero hacer cosas que no se pueden hacer

lo que queria era no tener que modificar las vistas (como indica Ejemplo4)

y solo modificar el controlador

saludos :(

ok, entiendo…

Lamento no serte de ayuda…

hey! todo bien, el problema es que no conozco los limites, pero los voy aprendiendo

gracias PoL!

un saludo

Hola de nuevo

modifique las vistas tal como dice el ejemplo


,array('target'=>'_blank')

esto me abre una nueva pestaña

como hago para que me abra una ventana?

Creo que llego un poco tarde ya que cambiaste las vistas, pero se me ocurre que poniendo

Yii::app()->getClientScript()->registerCoreScript(‘jquery’);

Yii::app()->getClientScript()->registerScript(‘abrirAparte’, ‘jQuery(“a”).attr(“target”,"_blank")’);

en la acción del controlador se puede hacer que todos los link de la página se abran en página nueva. En caso de no querer que sean TODOS los links de la página (por ejemplo tenes un menu que queres que se abran en la misma página) hay que ver como filtrar dentro de “a” para que sea solo con los que se desean. Por ejemplo si se quiere solo los que tengan la clase “nuevo” seria Yii::app()->getClientScript()->registerScript(‘abrirAparte’, ‘jQuery(“a.nuevo”).attr(“target”,"_blank")’); .

Para que se abra en una nueva ventana, me parece que hay una forma en javascript con windows.open pero la verdad no se muy bien eso.

Saludos

gracias por contestar!

el código va en el template?




Yii::app()->getClientScript()->registerCoreScript('jquery');

Yii::app()->getClientScript()->registerScript('abrirAparte', 'jQuery("a").attr("target","_blank")');



voy a probarlo y les cuento

para abrir la ventana yo uso el código de abajo, supongo que no es "la forma"

pero me funciona




echo CHtml::link('', '#',array('class'=>'btn_lov'

                ,'title'=>Yii::t('msj','title_buscar')

                ,'onclick'=>'lovMatriculas()'));





<script type="text/javascript">

function lovMatriculas(){


    var url= "<?php echo $this->createUrl('rp_matriculas/lovRp_matriculas',

             array('des_id_matricula'=>'Rp_novedades_mat_idMatricula'

                  ,'des_matricula'=>'Rp_matriculas_matricula'

                  ,'des_libro'=>'Rp_matriculas_libro'

                  ,'des_folio'=>'Rp_matriculas_folio'

                  ,'des_titulo'=>'Rp_titulos_descripcion'

                  ,'des_especialidad'=>'Rp_especialidades_descripcion'

                  ,'des_documento'=>'Personas_nro_documento'

                  ,'des_nombre'=>'Personas_nombre'

                  ,'des_apellido'=>'Personas_apellido'

                  )

           )?>";


  window.open(url,"lov_matriculas"

  ,"alwaysRaised=yes,toolbar=no,menubar=no,status=no

  ,resizable=yes,width=600,height=500,left=50,top=100");

}


</script>