PHP8 dan komposer 2 yang didukung
Symfony Dashboard & Admin Symfony. Dikembangkan dengan Symfony 5 , Vue 3 , Bootstrap 5 Framework.
Tidak ada perubahan yang dilakukan pada struktur simfony, struktur direktori saat ini digunakan. Namespace khusus untuk admin telah dibuat. Bidang ini digunakan untuk semua operasi administrator.
Antarmuka dirancang agar responsif menggunakan Bootstrap Twitter. Ketergantungan yang paling tidak mungkin dicoba digunakan.
Unduh Pdadmin
composer create-project appaydin/pd-admin pdadmin
Buat dan konfigurasikan file .env
.
Buat skema basis data
bin/console doctrine:schema:create --force
Jalankan server web bawaan
symfony server:start --no-tls -d
Instal & Bangun Aset
yarn install
yarn run build
Jalankan proses backround
pm2 start
# Manuel
# bin/console messenger:consume -vv
# bin/console schedule:run
Ada PD-pengguna untuk manajemen pengguna. Semua pengaturan ada dalam file config/packages/pd_user.yaml .
bin/console user:create
bin/console user:changepassword
bin/console user:role
Logon pengguna untuk bahasa multi digunakan. Setiap pengguna dapat memilih bahasanya sendiri. Saat Anda masuk, Anda secara otomatis dialihkan.
Bahasa baru dapat ditambahkan dari pengaturan kernel. Anda perlu menerjemahkan secara manual untuk bahasa baru.
SensiOfRameworkExtrabundle digunakan dengan komponen keamanan simfony. Ada tiga peran pengguna default.
Role_super_admin memiliki otoritas penuh. Otoritas Role_user dapat dibatasi dan akses panel dapat dimatikan dalam file Security.YAML .
Pengaturan sistem disimpan dalam database. Semua pengaturan dapat digunakan sebagai parameter setelah perakitan kontainer. Karena semua pengaturan dikompilasi dengan wadah, ia tidak membuat beban tambahan pada sistem. Pengaturan dapat dikonfigurasi menggunakan formulir Symfony dan ditambahkan ke menu Pengaturan dari luar melalui sistem "Menu Event". Hapus cache setelah perubahan pada pengaturan sistem, jika tidak pengaturan baru tidak akan diaktifkan.
Untuk pengaturan umum, Anda dapat menambahkannya ke SRC/Admin/Forms/System/GeneralForm
Tambahkan menu baru ke Pengaturan :
<?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 ;
}
}
Sistem widget dibuat dengan Symfony "EventDispatcher Component". Ini memiliki struktur yang dapat disesuaikan untuk setiap pengguna dan dapat dirancang khusus dengan mesin "Template Template". Untuk informasi lebih lanjut, kunjungi PD-Widget
Buat widget admin baru:
<?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 ;
})
);
}
}
Sistem menu dibuat dengan Symfony "EventDispatcher Component". Untuk setiap menu yang dibuat, acara dihasilkan secara default, dapat dimatikan dengan konfigurasi menu. Untuk informasi lebih lanjut, kunjungi PD-menu
Buat Menu:
<?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 ;
}
}