1. Go to this page and download the library: Download appaydin/pd-admin library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
appaydin / pd-admin example snippets
//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;
}
}
//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;
})
);
}
}
// 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;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.