Guardar el HTML de una vista en una variable en Laravel
Cómo generar el HTML de una vista y guardarlo en una variable en Laravel.
Hoy estuve trabajando en un sistema de generación de hojas de horas con el branding de Calima y que podamos enviar a nuestros clientes a final de mes. Por supuesto, usé Browsershot para generar el PDF.
Sin embargo, necesitaba enviarle a Browsershot directamente el HTML ya generado de las horas para evitar crear una ruta que pudiera ser accesible desde el mundo exterior. Una simple llamada a view('pdf.attendance_report')
no era suficiente ya que no devuelve el HTML como string. Investigando un poquito en los métodos prohibidos™️ , encontré que es posible llamar al método →render()
, y éste devuelve el HTML compilado de Blade!
public function handle(Collection $attendances, User $user): string
{
$html = view('pdf.attendance_report', [
'attendances' => $attendances,
'user' => $user,
])->render();
return Browsershot::html($html)->savePdf('attendance/report.pdf');
}