Eigene Adminseiten für Bludit-Plugins: Controller, View, Sidebar, CSRF und Redirect
Komplexe Plugin-Oberflächen sauber in den Bludit-Adminbereich integrieren.
Nicht jede Erweiterung passt in die normale Plugin-Einstellungsseite. Für Dashboards, Importer, Uploader oder komplexe Werkzeuge kann ein Plugin eine eigene Adminseite registrieren. Bludit stellt dafür adminController(), adminView() und adminSidebar() bereit.
URL und Lebenszyklus
Nach Aktivierung ist eine solche Seite unter /admin/plugin/<pluginname> erreichbar. Der Controller verarbeitet Logik und POST-Anfragen, die View erzeugt die Oberfläche, die Sidebar-Methode verlinkt sie im Adminmenü.
class pluginMeinTool extends Plugin
{
public function adminController()
{
checkRole(array('admin'));
global $layout;
$layout['title'] = 'Mein Tool | Bludit';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Daten validieren und verarbeiten
}
}
public function adminView()
{
global $security;
$token = $security->getTokenCSRF();
return '<form method="post">'
.'<input type="hidden" name="tokenCSRF" value="'.$token.'">'
.'<button class="btn btn-primary">Ausführen</button>'
.'</form>';
}
public function adminSidebar()
{
$url = HTML_PATH_ADMIN_ROOT.'plugin/'.Text::lowercase(__CLASS__);
return '<a class="nav-link" href="'.$url.'">Mein Tool</a>';
}
}
Warum Controller und View trennen?
- POST-Logik bleibt außerhalb der HTML-Erzeugung.
- Berechtigungsprüfungen stehen zentral im Controller.
- Die View kann sich auf Bootstrap/Bludit-UI konzentrieren.
- Später lassen sich Validierung, Redirect und Erfolgsmeldungen sauber ergänzen.
Meldungen und Redirects
Alert::set('Import abgeschlossen.');
Redirect::page('plugin/'.Text::lowercase(__CLASS__));
Ein Redirect nach erfolgreichem POST verhindert, dass der Browser den Upload oder Import beim Aktualisieren erneut absendet. Das ist das klassische Post/Redirect/Get-Muster.