Hola soy nuevo con Yii Framework y tengo un problema, con la aplicación ya creada, intento crear una serie de pdf’s (uso mPDF) de un listado, (en mi caso de empresas), y de sus datos, cuando le doy al botón generar PDF me indica que no lo encuentra
Not Found (#404)
Unable to resolve the request: empresa/pdf
The above error occurred while the Web server was processing your request.
Please contact us if you think this is a server error. Thank you.
Me gustaría saber donde tengo que colocar el archivo pdf.php (en mi caso, ahora esta en views) y que tendría que modificar, porque estoy perdido con este ide, y llevo varios días intentandolo pero no soy capaz.
Deberias mostrar el codigo del action en tu controller, para saber como es que estas generando los pdf’s, quizas asi pueda ayudarte, yo tembien estoy trabajando con mPDF y me ha salido todo muy bien, si me explicas mas el probelma y me muestras el codigo, quizas pueda ayudar.
hola en yii2 yo quiero exportar a pdf lo que esté almacenado en el grid en ese momento, exportar en pdf no es problema, pero como puedo capturar esa informacion para gestionarla posteriormente?
<?php
namespace app\controllers;
use Yii;
use app\models\Empresa;
use app\models\EmpresaSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
/**
* EmpresaController implements the CRUD actions for Empresa model.
*/
class EmpresaController extends Controller
{
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
],
],
];
}
/**
* Lists all Empresa models.
* @return mixed
*/
public function actionIndex()
{
$searchModel = new EmpresaSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
/**
* Displays a single Empresa model.
* @param string $id
* @return mixed
*/
public function actionView($id)
{
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
/**
* Creates a new Empresa model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
public function actionCreate()
{
$model = new Empresa();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->Cif]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
/**
* Updates an existing Empresa model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param string $id
* @return mixed
*/
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->Cif]);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
/**
* Deletes an existing Empresa model.
* If deletion is successful, the browser will be redirected to the 'index' page.
* @param string $id
* @return mixed
*/
public function actionDelete($id)
{
$this->findModel($id)->delete();
return $this->redirect(['index']);
}
/**
* Finds the Empresa model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
* @param string $id
* @return Empresa the loaded model
* @throws NotFoundHttpException if the model cannot be found
*/
protected function findModel($id)
{
if (($model = Empresa::findOne($id)) !== null) {
return $model;
} else {
throw new NotFoundHttpException('The requested page does not exist.');
}
}
public function actionCrearPdf($id){
$mPDF1 = Yii::app()->ePdf->mpdf();
$mPDF1->WriteHTML(
$this->render('pdf',array(
'model'=>$this->loadModel($id), true
))
);
$mPDF1->Output();
}
}
yo lo que necesito ahora es ver como poder obtener los datos que se encuentran en el grid y no se como mostrarlos en mi vista personalizada que es la que voy a exportar a pdf
Una pregunta, ya puedes exportar lo del Cgridview al pdf?, por que si ya puedes hacer esto ya en el controlador podrias manipular esa información de acuerdo a tus necesidades.
en yii 1 no tuve ningun problema para hacer eso, ahora en yii2 me gustaria poder hacer lo mismo, ahora no se como tratar el dataprovider como arreglo para poderlo utilizar en la vista, porque lo que quiero es exportar a pdf el resultado de las busquedas en el gridview, en el post anterior fue como lo hice en yii1 ahora quisiera que me iluminaran para hacer lo mismo en yii2 y respondiendo a tu pregunta, no, en yii2 no lo he podido hacer aun, o mejor dicho, ya se como mostrarlos todos pero ese no es el objetivo, sino mostrar los que esten en el gridview ya que hasta ahora si le pongo ‘pagination’=>false me coge todos los datos pero si le pongo true solo me muestra los de esa pagina y no es lo ke necesito, yo quiero el resultado del filtro. gracias
Lo siento actualmente trabajo con Yii 1,15; y no he explorado Yii2, pero si quizas puedes hacer un var_dump o un print_r de tu dataprovider puedes ver como esta estructurado este y puedas encontrar la forma de recorrer e imprimir los datos. o en su defecto hacer la transicion a un array que ya puedas recorrer a tu gusto.
Debes revisar la version de tu navegador, o probar en varios en ocaciones chrome da problemas, y estos son los parametros que puedes usar segun tus necesidades.
I: enviar el archivo en línea para el navegador. El plug-in se utiliza si está disponible. El nombre dado por nombre de archivo se utiliza cuando se selecciona la opción "Guardar como" opción en el enlace que genera el PDF
D:. Enviar al navegador y forzar una descarga de archivos con el nombre dado por nombre de archivo
F:. Ahorrar en un archivo local con el nombre dado por nombre de archivo (puede incluir una ruta)
S:. devolver el documento como una cadena. nombre se ignora.