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.

Guardar el HTML de una vista en una variable en Laravel
Photo by RoonZ nl / Unsplash

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');
}