open two links in the controller?

3

I have a driver that saves the data when I make changes and redirects me to the main page when I do an update.

return redirect()->route('payments.update', $payments->loan_id);

all right, the thing I want to print a pdf

return redirect()->route('pdf.report', array('id' => $payments->id,'tipo' => 1));

also opens the page and I see my pdf all good. No problem.

but my query is:

How can I go to my "payments.update" page, but before I open a new window with the "pdf.report" link?

PaymentController.php

    public function index($id)
{
    $payments = Loan::searchid($id)->orderBy('id','ASC')->paginate(10);
    return view('payments.index', ['opcion' => 1])->with('payments', $payments);

}

public function pay($id)
{
    $payments = Payment::searchid($id)->orderBy('id','ASC')->paginate(10);
    return view('payments.index', ['opcion' => 2])->with('payments', $payments);

}
public function update(PaymentRequest $request, $id)
    {
    $payments->save();
    $loans->save();
    // aqui me guarda los cambios, omiti lo demas por que era muy extenso.
    return redirect()->route('payments.update', $payments->loan_id);
    // return redirect()->route('pdf.report', array('id' => $payments->id,'tipo' => 1));
}   

Routes:

Route::get('/payments/{id}', ['uses'=>'PaymentsController@index','as'=>'payments.index']);
Route::get('/payments/{id}/pay', ['uses'=>'PaymentsController@pay','as'=>'payments.pay']);
Route::get('/payments/{id}/paid', ['uses'=>'PaymentsController@paid','as'=>'payments.paid']);
Route::put('/payments/{id}/pay', ['uses'=>'PaymentsController@update','as'=>'payments.update']);

//PDFs
Route::get('reportes', 'PdfController@index');
Route::get('crear-reporte-clientes/{tipo}', 'PdfController@crear_reporte_clientes');
Route::get('payments/{id}/paid/report/{tipo}',['uses'=>'PdfController@paid_report','as'=>'pdf.report']);

PdfController.php

  public function index()
  {
    return view("pdf.listado_reportes");
  }


  public function crearPDF($loans,$vistaurl,$tipo)
{
    $data = $loans;
    $date = date('Y-m-d');
    $view =  \View::make($vistaurl, compact('data', 'date'))->render();
    $pdf = \App::make('dompdf.wrapper');
    $pdf->loadHTML($view);

    if($tipo==1){return $pdf->stream('reporte');}
    if($tipo==2){return $pdf->download('reporte.pdf'); }
}

public function crear_reporte_pago($loans,$vistaurl,$tipo)
{
    $data = $loans;
    $pdf = \PDF::loadView('pdf.report_paid',['nombre'=> $loans->loan->client->nombre,'id' => $loans->id,'pay_id' => $loans->loan_id, 'pago' => $loans->pago, 'pago_abono' => $loans->pago_abono, 'motivo' => $loans->motivo,'fecha_pago' => $loans->fecha_pago, 'estado' => $loans->estado, 'fecha_pagado' => $loans->updated_at]);
    if($tipo==1){return $pdf->stream('reporte');}
    if($tipo==2){return $pdf->download('reporte.pdf'); }
}


public function crear_reporte_clientes($tipo){

 $vistaurl="pdf.reporte_de_clientes";
 $loans=loan::all();
 return $this->crearPDF($loans, $vistaurl,$tipo);
}

public function paid_report($id,$tipo){

 $vistaurl="pdf.report_paid";
 $loans=Payment::find($id);

 return $this->crear_reporte_pago($loans, $vistaurl,$tipo);
}
    
asked by Luis Cárdenas 06.09.2016 в 01:15
source

1 answer

1

Taking into account that you can not generate two HTTP responses at the same time, it occurs to me to open in a new window the generated pdf, from the view of the main page, as you describe it.

In the corresponding view you can include something like this:

<script>window.open({{ route('pdf.report', ['id' => $payments->id,'tipo' => 1]) }});</script>

You should also consider:

  • Pass variable $payments->id to the view
  • Advertising blockers may not cooperate much when opening the new window with the pdf.
answered by 06.09.2016 / 02:51
source