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 deApp\Classes\Outpututilizada para añadir contenido renderizado.$event->routeName: el nombre de la ruta actual, onullcuando 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
RenderFooterEventcuando 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 conaddView(). - Usa
$event->routeNamecuando la inyección deba aplicarse solo a páginas específicas del panel.