Unterstützt Php8 und Komponist 2
Symfony leistungsstarke Dashboard & Admin. Entwickelt mit Symfony 5 , Vue 3 , Bootstrap 5 Framework.
Die Symfony -Struktur wurden keine Änderungen vorgenommen, die aktuelle Verzeichnisstruktur wird verwendet. Es wurde ein benutzerdefinierter Namespace für Administrator erstellt. Dieses Feld wird für alle Administratoren verwendet.
Die Schnittstelle ist so konzipiert, dass sie mit Twitter -Bootstrap reagiert. Die am wenigsten mögliche Abhängigkeit wurde versucht, verwendet zu werden.
Laden Sie PDADMIN herunter
composer create-project appaydin/pd-admin pdadmin
Erstellen und konfigurieren Sie die .env
-Datei.
Datenbankschemata erstellen
bin/console doctrine:schema:create --force
Führen Sie den integrierten Webserver aus
symfony server:start --no-tls -d
Vermögen installieren und bauen
yarn install
yarn run build
Backround -Prozess laufen
pm2 start
# Manuel
# bin/console messenger:consume -vv
# bin/console schedule:run
Es gibt PD-Benutzer für die Benutzerverwaltung. Alle Einstellungen finden Sie in der Datei config/pakete/pd_user.yaml .
bin/console user:create
bin/console user:changepassword
bin/console user:role
Benutzeranmeldung für Multi -Sprache wird verwendet. Jeder Benutzer kann seine eigene Sprache auswählen. Wenn Sie sich anmelden, werden Sie automatisch umgeleitet.
Neue Sprachen können aus den Kernel -Einstellungen hinzugefügt werden. Sie müssen manuell für die neue Sprache übersetzen.
SensioFrameWorkextrabundle wird mit Symfony -Sicherheitskomponente verwendet. Es gibt drei Standardbenutzerrollen.
ROLE_SUPER_ADMIN hat die volle Autorität. Die Behörden von ROLE_USER können eingeschränkt werden und der Zugriff auf dem Panel kann in der Datei "Security.yaml" deaktiviert werden.
Die Systemeinstellungen werden in der Datenbank gespeichert. Alle Einstellungen können als Parameter nach der Containerbaugruppe verwendet werden. Da alle Einstellungen mit dem Container kompiliert werden, erzeugt sie keine zusätzliche Last für das System. Einstellungen können mit Symfony -Formularen konfiguriert und über das System "Menüereignis" zum Menü Einstellungen von außen hinzugefügt werden. Löschen Sie den Cache nach Änderungen der Systemeinstellungen, andernfalls werden die neuen Einstellungen nicht aktiviert.
Für allgemeine Einstellungen können Sie es zu SRC/Admin/Forms/System/Generalform hinzufügen
Fügen Sie ein neues Menü zu Einstellungen hinzu :
<?php
//src/Admin/Menu/SettingsMenu.php
namespace App Admin Menu ;
use Pd MenuBundle Builder ItemInterface ;
use Pd MenuBundle Builder Menu ;
class SettingsMenu extends Menu
{
public function createMenu ( array $ options = []): ItemInterface
{
// Create Root Item
$ menu = $ this -> createRoot ( ' settings_menu ' )-> setChildAttr ([
' class ' => ' nav nav-pills ' ,
' data-parent ' => ' admin_config_general ' ,
]);
// Create Menu Items
$ menu -> addChild ( ' nav_config_general ' )
-> setLabel ( ' nav_config_general ' )
-> setRoute ( ' admin_config_general ' )
-> setLinkAttr ([ ' class ' => ' nav-item ' ])
-> setRoles ([ ' ROLE_CONFIG_GENERAL ' ])
// Email
-> addChildParent ( ' nav_config_email ' )
-> setLabel ( ' nav_config_email ' )
-> setRoute ( ' admin_settings_email ' )
-> setLinkAttr ([ ' class ' => ' nav-item ' ])
-> setRoles ([ ' ROLE_SETTINGS_EMAIL ' ]);
return $ menu ;
}
}
Das Widget -System wurde mit Symfony "EventDispatcher -Komponente" erstellt. Es verfügt über eine einstellbare Struktur für jeden Benutzer und kann speziell mit der "Zweigvorlage" -Motor entwickelt werden. Weitere Informationen finden Sie auf PD-Widget
Erstellen Sie ein neues Administrator -Widget:
<?php
//src/Admin/Widgets/AccountWidget.php
namespace App Admin Widgets ;
use Pd WidgetBundle Builder Item ;
use Pd WidgetBundle Event WidgetEvent ;
use Doctrine ORM EntityManagerInterface ;
use Symfony Component HttpFoundation Request ;
class AccountWidget
{
private $ entityManager ;
public function __construct ( EntityManagerInterface $ entityManager )
{
$ this -> entityManager = $ entityManager ;
}
/**
* Build Widgets.
*
* @param WidgetEvent $event
*/
public function builder ( WidgetEvent $ event )
{
// Get Widget Container
$ widgets = $ event -> getWidgetContainer ();
// Add Widgets
$ widgets
-> addWidget (( new Item ( ' user_statistics ' , 3600 ))
-> setGroup ( ' admin ' ) // Widget Adds to "Admin" Group
-> setName ( ' widget_user_statistics.name ' )
-> setDescription ( ' widget_user_statistics.description ' )
-> setTemplate ( ' @Admin/Widget/userStatistics.html.twig ' )
-> setRole ([ ' ROLE_WIDGET_USERSTATISTICS ' ])
-> setConfigProcess ( function ( Request $ request ) {
/**
* Controller for Widget Settings
* The return value is stored in the user specific database
*/
if ( $ type = $ request -> get ( ' type ' )) {
switch ( $ type ) {
case ' 1week ' :
return [ ' type ' => ' 1week ' ];
case ' 1month ' :
return [ ' type ' => ' 1month ' ];
case ' 3month ' :
return [ ' type ' => ' 3month ' ];
}
}
return false ;
})
-> setData ( function ( $ config ) {
/**
* The return value can be used in the twig template.
* The function will not execute unless you call it in the template.
* You can use the database operations here.
*/
// Set Default Config
if (! isset ( $ config [ ' type ' ])) {
$ config [ ' type ' ] = ' 1week ' ;
}
// Create Statistics Data
if ( $ config [ ' type ' ] === ' 1month ' ) {
$ data = [ ' chartDay ' => ' 7 ' ];
// Create Data
} else if ( $ config [ ' type ' ] === ' 1month ' ) {
$ data = [ ' chartDay ' => ' 30 ' ];
} else {
$ data = [ ' chartDay ' => ' 90 ' ];
}
return $ data ;
})
);
}
}
Das Menüsystem wurde mit Symfony "EventDispatcher -Komponente" erstellt. Für jedes erstellte Menü wird das Ereignis standardmäßig generiert und durch Menükonfiguration ausgeschaltet werden. Weitere Informationen finden Sie im PD-Menu
Menü erstellen:
<?php
// src/Admin/Menu/MainNav.php
namespace App Admin Menu ;
use Pd MenuBundle Builder ItemInterface ;
use Pd MenuBundle Builder Menu ;
class MainNav extends Menu
{
public function createMenu ( array $ options = []): ItemInterface
{
// Create ROOT Menu
$ menu = $ this -> createRoot ( ' main_menu ' , true ); // Event enabled
// Create Dashboard
$ menu -> addChild ( ' nav_dashboard ' , 1 )
-> setLabel ( ' nav_dashboard ' )
-> setRoute ( ' admin_dashboard ' )
-> setRoles ([ ' ROLE_DASHBOARD ' ])
-> setExtra ( ' label_icon ' , ' dashboard ' );
/*
* Create Account Section
*/
$ menu
-> addChild ( ' nav_account ' , 5 )
-> setLabel ( ' nav_account ' )
-> setRoute ( ' admin_account_list ' )
-> setRoles ([ ' ROLE_ACCOUNT_LIST ' ])
-> setExtra ( ' label_icon ' , ' people ' )
// Account List
-> addChild ( ' nav_account ' , 1 )
-> setLabel ( ' nav_account ' )
-> setRoute ( ' admin_account_list ' )
-> setRoles ([ ' ROLE_ACCOUNT_LIST ' ])
// Group List
-> addChildParent ( ' nav_group ' , 2 )
-> setLabel ( ' nav_group ' )
-> setRoute ( ' admin_account_group_list ' )
-> setRoles ([ ' ROLE_GROUP_LIST ' ]);
return $ menu ;
}
}