Inicio
NexoPOS

Renderizar evento de pie de página

RenderFooterEvent se envía mientras NexoPOS renderiza el pie de página del panel. Los módulos pueden escuchar este evento y añadir contenido personalizado en el pie de página, normalmente scripts, marcado o una vista Blade que debe estar disponible cuando la página termine de cargarse.

Cuando se celebra el evento

NexoPOS envía este evento desde la vista de inyección del pie de página cuando la solicitud actual tiene una ruta de Laravel. El nombre de la ruta actual se pasa al evento, para que los oyentes puedan decidir si su contenido de pie de página debe inyectarse en todas las páginas o solo en una página específica.

Propiedades disponibles

  • $event->output: una instancia de App\Classes\Output utilizada para añadir contenido renderizado.
  • $event->routeName: el nombre de la ruta actual, o null cuando no hay ningún nombre de ruta disponible.

Escuchar desde un módulo

Un módulo puede registrar un listener creando una clase de listener dentro de su directorio Listeners, por ejemplo RenderFooterEventListener. El listener recibe la instancia del evento a través de su método handle().

<?php

namespace Modules\MyModule\Listeners;

use App\Events\RenderFooterEvent;

class RenderFooterEventListener
{
    public function handle( RenderFooterEvent $event )
    {
        $event->output->addView( 'MyModule::footer.scripts' );
    }
}

Escuchar con Event::listen

El evento también se puede registrar directamente con el método Event::listen() de Laravel. Esto es útil cuando el listener se registra desde un proveedor de servicios u otra clase de inicialización.

use App\Events\RenderFooterEvent;
use Illuminate\Support\Facades\Event;

Event::listen( RenderFooterEvent::class, function ( RenderFooterEvent $event ) {
    $event->output->addView( 'MyModule::footer.scripts' );
} );

Limitar la inyección a una ruta

Cuando el contenido del pie de página solo se necesita en una pantalla, comprueba $event->routeName antes de agregar la vista. Esto mantiene los recursos del módulo y el marcado fuera de las páginas que no los necesitan.

Event::listen( RenderFooterEvent::class, function ( RenderFooterEvent $event ) {
    if ( $event->routeName !== 'ns.dashboard.orders.index' ) {
        return;
    }

    $event->output->addView( 'MyModule::orders.footer' );
} );

Inyectando la vista

Utilice $event->output->addView( 'ModuleNamespace::path.to.file' ) para agregar una vista Blade al resultado del pie de página. La ruta de la vista debe poder resolverse mediante Laravel usando el espacio de nombres de vistas registrado del módulo.

$event->output->addView( 'ModuleNamespace::path.to.file' );

Resumen

  • Usa RenderFooterEvent cuando un módulo necesite inyectar la salida del pie de página después de que se haya cargado una página.
  • Agrega contenido a través de $event->output, normalmente con addView().
  • Usa $event->routeName cuando la inyección deba aplicarse solo a páginas específicas del panel.