PHP code example of appaydin / pd-admin

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;
    }
}