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 vonApp\Classes\Output, die verwendet wird, um gerenderten Inhalt anzufügen.$event->routeName: der aktuelle Routenname odernull, 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->outputhinzu, normalerweise mitaddView(). - Verwenden Sie
$event->routeName, wenn die Injektion nur auf bestimmte Dashboard-Seiten angewendet werden soll.