Sie können nicht bedingt Code ausführen, basierend auf Routing innerhalb boostrap.php als Die Routing-Konfiguration für Ihre App wurde noch nicht geladen.
Sie müssen es tun alte Schule Stil und verwenden $_SERVER['REQUEST_URI']
.
$url = $_SERVER['REQUEST_URI'];
$admin = '/admin/';
if(substr($url, 0, strlen($admin)) === $admin) {
Plugin::load('Josegonzalez/Upload');
\Cake\Event\EventManager::instance()->on(new \App\Controller\Event\AppEventListener());
}
Aktualisiert
Ihr Plugin sollte seine eigene Bootstrap-Datei haben. Welche enthält
Upload/config/bootstrap.php:
\Cake\Event\EventManager::instance()->on(new \App\Controller\Event\AppEventListener());
Die Bootstrap-App dann sagt CakePHP den Bootstrap enthalten, wenn das Plugin geladen.
App/config/bootstrap.php:
Plugin::load('Josegonzalez/Upload', ['bootstrap' => true]);
Sie sollten Ihr Plugin nicht bedingt laden.
Ich denke, Sie suchen nach Authentifizierung bei Anfragen an Ihr Plugin. Sie möchten die Nutzung Ihres Plugins nur autorisierten Administratoren gestatten. Das ist kein Plugin-Problem. Es ist ein Authentifizierungsproblem und Sie sollten die Authentifizierungskomponente in Ihrem Plugin verwenden, um zu überprüfen, ob die Anfrage gültig ist und der aktuelle Benutzer ein Administrator ist.
Dank. Gibt es irgendwo anders, dass ich diesen Event-Listener laden kann (dass ich das Tool von CakePHP dazu verwenden kann? Es fühlt sich schlecht an, $ _SERVER zu verwenden (dieses Event verwendet "Model.initialize") – hamidreza
Nein, ich tue es nicht Ich benötige Auth für dieses Plugin, meine Anwendung enthält 2 Teile, die erste ist Admin Web Panel und die zweite ist die Website für normale Benutzer im Admin Panel muss ich Foto hochladen, aber ich brauche es nicht (Upload Plugin) in der Homepage der Website Ich möchte dieses Plugin für Admin-Präfix laden und der EventListener behandelt die Verhaltensweisen, die zum Laden für Admin-Panel benötigt werden (wie meine benutzerdefinierte Zeitstempel und .....). Es geht nicht wirklich um Zugriffsverwaltung ich möchte es für meine laden Modelle nur, wenn ich im Admin-Präfix bin (weil meine Modelle die gleichen für Admin und Haupt-Website sind) – hamidreza