Skip to content

youshido-php/AdminBundle

Repository files navigation

AdminBundle

1. Install required bundles via composer:

composer require youshido/admin
composer require liip/imagine-bundle

2. Enable bundles:

//AppKernel.php

$bundles = [
    //...

    new Youshido\AdminBundle\YAdminBundle(),
    new Liip\ImagineBundle\LiipImagineBundle(),
];

3. Create your own Admin Bundle:

php app/console generate:bundle --namespace=AdminBundle --bundle-name=AdminBundle --dir=src

4. Create action in your AdminBundle default controller:

//AdminBundle\Controller\DefaultController

/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/", name="admin.dashboard")
* @Route("/dashboard", name="project.admin.dashboard")
*/
public function indexAction()
{
  $this->get('admin.context')->setActiveModuleName('dashboard');

  return $this->render('YAdminBundle:Default:index.html.twig',
      [
          'siteStatistics' => null,
          'widgets' => [

          ],
      ]
  );
}

5. Enable routing:

//routing.yml

admin:
    resource: "@YAdminBundle/Controller/"
    type:     annotation
    prefix:   /admin

app_admin: #your admin bundle
    resource: "@AdminBundle/Controller/"
    type:     annotation
    prefix:   /admin

_liip_imagine:
    resource: "@LiipImagineBundle/Resources/config/routing.xml"

6. Add to your config.yml:

//config.yml


liip_imagine:
    resolvers:
       default:
          web_path: ~

    filter_sets:
        cache: ~
        thumbnail_120x90:
            quality: 75
            filters:
                thumbnail: { size: [120, 90], mode: outbound }
        thumbnail_50x50:
            quality: 75
            filters:
                thumbnail: { size: [50, 50], mode: outbound }

!!!
twig:
    //...

    globals:
        adminContext: '@admin.context'

7. Add to your security.yml

    role_hierarchy:
        ROLE_ADMIN:       [ROLE_USER]
        ROLE_SUPER_ADMIN: [ROLE_ADMIN]

    providers:
        admin_provider:
            entity:
                class: Youshido\AdminBundle\Entity\AdminUser
                property: login


    encoders:
        Youshido\AdminBundle\Entity\AdminUser: md5

    firewalls:
        admin_free:
            pattern: ^/admin/login$ # ^/(?:ua/)?admin/login$ - if you have internationalization
            context: admin
            anonymous: ~

        admin_firewall:
            pattern: ^/admin # ^/(?:ua/)?admin - if you have internationalization
            provider: admin_provider
            context: admin
            form_login:
                login_path: admin.login
                check_path: admin.login_check
            logout:
                path:   admin.logout
                target: /admin

8. Create 'structure.yml' file in app/config/admin directory with content:

name: "Your project name"
modules:
  dashboard:
    icon: fa fa-home
    route: admin.dashboard
    type: ~

imports:
    - { resource: ../../../vendor/youshido/admin/Resources/config/admin/structure.admin.yml }

9. Run in console

php app/console doctrine:schema:update --force
php app/console admin:setup

10. Generate configuration for you entity

php app/console admin:generate
!!! Don't forget to import generated file to structure.yml

11. Config if you use internationalization

//app/admin/structure.yml
internationalization:
  enable: true
  locales:
    en: ~
    ua: ~
    ru: ~