[RESUELTO Error al generar una salida a excel ERR_INVALID_RESPONSE

Hola Comunidad,

gracias por vuestro tiempo.

dentro de mi proyecto, tengo que generar una salida a excel a partir de los datos de un Gridview, bien estoy utilizando request para hacerlo puesto que la hoja excel es my simple, dentro del modelo en la función search tengo hecho lo siguiente para separar si el usuario ha filtrado datos o no.




$session=new CHttpSession;

               $session->open();

               $session['TbPersonasServicios_records']=$criteria;  //Esto para guardar la criteria en la sesión actual para usarlo posteriormente.

           



en el controller tengo desarrollado lo siguente




 public function actionGenerarExcel()

        {

        $session=new CHttpSession;

        $session->open();


        if(isset($session['TbPersonasServicios_records']))

           //Si hay datos filtrados entonces usar la criteria guardada en la sesion (esto lo guardamos en la funcion search() del modelo)

        {

        $model=TbPersonasServicios::model()->findAll($session['TbPersonasServicios_records']);

                 

            $content=$this->renderPartial("excelReport",array ("model"=>$model),true);

            yii::app()->request->sendFile("ExcelPersonasServicios.xls",$content);

        

        }

        else

           //Si no hay datos filtrados exportar todo

        {

             $model=TbPersonasServicios::model()->findAll();

        }

            $model=TbPersonasServicios::model()->findAll();

            $content=$this->renderPartial("excelReport",array ("model"=>$model),true);

            yii::app()->request->sendFile("ExcelPersonasServicios.xls",$content);

        

        }




en la parte de rules tengo habilitado el acceso a la función.




public function accessRules()

	{

		return array(

			array('allow',  // allow all users to perform 'index' and 'view' actions

				'actions'=>array('index','view','BuscaPersonas','PasaPersonas','DesdeEntidad', 'GenerarExcel', 'GenerarPdf'),

				'users'=>array('*'),




y en la vista correspondiente tengo el creado el dentro de su ruta tengo el excelReport.php.

en la vista Admin tengo generado un botón para que genere el volcado a excel.




<?php echo CHtml::submitButton('Generar Excel', array('submit'=>array('TbPersonasServicios/GenerarExcel'))); ?>



y en el menú también puse un acceso a generar el informe




 array('label'=>'Excel', 'url'=>array('GenerarExcel')),



Al ejecutar me muestra el siguiente error que no sé porque sucede puesto que uso la misma técnica para generar un pdf y éste si me funciona, además en un proyecto anterior funciona también empleando lo mismo.




ERR_INVALID_RESPONSE



muestra que no puede encontrar el archivo /index.php?r=tbPersonasServicios/GenerarExcel.

Alguna pista…

Hola.

Quiza te falta agregar tu accion a los filters


	

public function filters(){

		return array(

			'accessControl', // perform access control for CRUD operations

			'postOnly + delete, GenerarExcel', // we only allow deletion via POST request

		);

	}



Saludos.

Hola,

Gracias por contestar, esta función la tengo colocada igual, creo que no es la solución. la función que uso para generar el pdf se basa en lo mismo y funciona sin problemas…

creo que por algún motivo cuando genero una nueva función en el controller por alguna razón este no la tiene en cuenta… he creado una nueva public actionPrueba(){ …} que redirige a una vista simple y al invocarla desde la url me muestra el mismo error.




ERR_INVALID_RESPONSE



Donde puedo mirar, en el main.php algún valor que no lo tengo bien puesto.




 'user'=>array(

			// enable cookie-based authentication

			'allowAutoLogin'=>true,

		),


		// uncomment the following to enable URLs in path-format

		

		'urlManager'=>array(

			'urlFormat'=>'path',

			'rules'=>array(

				'<controller:\w+>/<id:\d+>'=>'<controller>/view',

				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',

				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

			),

		),

		



He dejado el urlManger habilitado y he generado la vista usando el CRUD de GII y he copiado el actiongenerado por el crud dentro del controller como un nuevo action, así he podido generar la vista y sin problemas.

el motivo por el cual funciona de esta forma no he llegado a comprenderlo…