Startseite
NexoPOS

RenderFooterEvent

„RenderFooterEvent“ wird ausgelöst, während NexoPOS den Dashboard-Footer rendert. Module können auf dieses Ereignis reagieren und benutzerdefinierte Footer-Ausgaben anhängen, normalerweise Skripte, Markup oder eine Blade-Ansicht, die verfügbar sein muss, wenn die Seite das Laden abgeschlossen hat.

Wenn das Ereignis stattfindet

NexoPOS löst dieses Ereignis aus der Footer-Injection-Ansicht aus, wenn die aktuelle Anfrage eine Laravel-Route hat. Der aktuelle Routenname wird an das Ereignis übergeben, sodass Listener entscheiden können, ob ihr Footer-Inhalt auf jeder Seite eingefügt werden soll oder nur auf einer bestimmten Seite.

Verfügbare Eigenschaften

  • $event->output: eine Instanz von App\Classes\Output, die verwendet wird, um gerenderten Inhalt anzufügen.
  • $event->routeName: der aktuelle Routenname oder null, wenn kein Routenname verfügbar ist.

Hören Sie aus einem Modul heraus

Ein Modul kann einen Listener registrieren, indem es eine Listener-Klasse innerhalb seines Listeners-Verzeichnisses erstellt, zum Beispiel RenderFooterEventListener. Der Listener erhält die Event-Instanz über seine handle()-Methode.

<?php

namespace Modules\MyModule\Listeners;

use App\Events\RenderFooterEvent;

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

Hören mit Event::listen

Das Ereignis kann auch direkt mit der Methode Event::listen() von Laravel registriert werden. Das ist nützlich, wenn der Listener aus einem Service Provider oder einer anderen Bootstrap-Klasse registriert wird.

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

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

Beschränken Sie die Injektion auf eine Route

Wenn der Footer-Inhalt nur auf einem Bildschirm benötigt wird, prüfe $event->routeName, bevor du die View hinzufügst. So bleiben Modul-Assets und Markup von Seiten fern, die sie nicht benötigen.

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

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

Das Einfügen der Ansicht

Verwenden Sie $event->output->addView( 'ModuleNamespace::path.to.file' ), um eine Blade-Ansicht an die Footer-Ausgabe anzuhängen. Der Ansichts-Pfad muss von Laravel anhand des registrierten View-Namensraums des Moduls auflösbar sein.

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

Zusammenfassung

  • Verwenden Sie RenderFooterEvent, wenn ein Modul die Ausgabe im Footer einfügen muss, nachdem eine Seite geladen wurde.
  • Fügen Sie Inhalte über $event->output hinzu, normalerweise mit addView().
  • Verwenden Sie $event->routeName, wenn die Injektion nur auf bestimmte Dashboard-Seiten angewendet werden soll.