Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Deveosys Admin Laravel Package

deveosys/deveosys_admin

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup for First Use

  1. Install Dependencies

    composer require symfony/templating deveosys/deveosys_admin "dev-master"
    
  2. Enable Bundles Add to AppKernel.php:

    new EasyCorp\Bundle\EasyAdminBundle\EasyAdminBundle(),
    new FOS\UserBundle\FOSUserBundle(),
    new Deveosys\AdminBundle\DeveosysAdminBundle(),
    
  3. Configure Routing Add to routing.yml:

    deveosys_admin:
        resource: "@DeveosysAdminBundle/Resources/config/routing.yml"
        prefix: /admin
    
  4. Basic Configuration Create config/deveosysAdmin.yml:

    easy_admin:
        site_name: '<YourApp> Admin'
        design:
            templates:
                layout: '@DeveosysAdmin/layouts.html.twig'
    
  5. First Use Case Access /admin to see the pre-configured EasyAdmin dashboard with FOSUserBundle integration (users, roles, permissions).


Implementation Patterns

Core Workflows

  1. User Management

    • Leverage FOSUserBundle’s built-in CRUD for users, groups, and roles.
    • Extend with custom fields via EasyAdmin’s Entity configuration:
      # config/easy_admin.yml
      easy_admin:
          entities:
              FOS\UserBundle\Entity\User:
                  class: AppBundle\Entity\User
                  list:
                      fields: ['username', 'email', 'enabled', 'roles']
                  form:
                      fields: ['username', 'email', 'plainPassword', 'roles']
      
  2. Bootstrap 4 Integration

    • Override templates in templates/easy_admin/ to customize:
      {# templates/easy_admin/crud/index.html.twig #}
      {% extends '@DeveosysAdmin/crud/index.html.twig' %}
      {% block stylesheets %}
          {{ parent() }}
          <link href="/path/to/custom.css" rel="stylesheet">
      {% endblock %}
      
  3. Dynamic Admin Panels

    • Register custom entities dynamically:
      // src/DeveosysAdminBundle/DependencyInjection/Compiler/Pass.php
      public function process(ContainerBuilder $container) {
          $definition = $container->findDefinition('deveosys_admin.entity_manager');
          $definition->addMethodCall('addEntity', ['AppBundle\Entity\Post']);
      }
      
  4. Permission-Based Access

    • Use EasyAdmin’s permission option:
      easy_admin:
          entities:
              AppBundle\Entity\Post:
                  permission: 'ROLE_ADMIN'
      

Integration Tips

  • Symfony Flex: If using Symfony 4/5, replace AppKernel.php with config/bundles.php:
    return [
        // ...
        Deveosys\AdminBundle\DeveosysAdminBundle::class => ['all' => true],
    ];
    
  • Asset Management: Use Webpack Encore to compile Bootstrap 4 assets alongside Twig templates.
  • Doctrine Extensions: Pair with stof/doctrine-extensions-bundle for soft deletes, timestamps, etc., in EasyAdmin CRUD.

Gotchas and Tips

Pitfalls

  1. Bundle Order Matters

    • Error: ClassNotFoundException for FOSUserBundle or EasyAdminBundle.
    • Fix: Ensure DeveosysAdminBundle is loaded after FOSUserBundle and EasyAdminBundle in AppKernel.php.
  2. Twig Template Overrides

    • Error: Custom templates not loading.
    • Fix: Place overrides in templates/easy_admin/ (not templates/DeveosysAdmin/). Clear cache:
      php bin/console cache:clear
      
  3. Routing Conflicts

    • Error: /admin routes clash with other bundles.
    • Fix: Use prefix: /app_admin in routing.yml or adjust DeveosysAdminBundle's routes.
  4. FOSUserBundle Configuration

    • Error: User registration/login fails.
    • Fix: Ensure fos_user is configured in config/packages/security.yaml:
      security:
          firewalls:
              main:
                  form_login:
                      provider: fos_userbundle
      

Debugging

  • Enable Debug Mode: Add to config/packages/dev/debug.yaml:
    framework:
        router:
            debug: "%kernel.debug%"
    
  • Check Logs: Run php bin/console debug:container deveosys_admin to inspect service configurations.

Extension Points

  1. Custom Actions

    • Add buttons to EasyAdmin CRUD:
      # config/easy_admin.yml
      easy_admin:
          entities:
              AppBundle\Entity\Post:
                  actions:
                      - { name: 'publish', icon: 'fa fa-bullhorn', label: 'Publish' }
      
    • Implement the action in a controller:
      // src/Controller/Admin/PostAdminController.php
      public function publishAction(EntityManager $em, Post $post) {
          $post->setPublishedAt(new \DateTime());
          $em->flush();
          return $this->redirectToRoute('easyadmin', ['entity' => 'Post']);
      }
      
  2. Event Listeners

    • Subscribe to EasyAdmin events (e.g., EasyAdminEvent::PRE_PERSIST):
      // src/EventListener/AdminListener.php
      public static function getSubscribedEvents() {
          return [
              EasyAdminEvents::PRE_PERSIST => 'onPrePersist',
          ];
      }
      public function onPrePersist(PrePersistEvent $event) {
          $entity = $event->getEntity();
          if ($entity instanceof User) {
              $entity->setLastLogin(new \DateTime());
          }
      }
      
  3. Dynamic Field Configuration

    • Use PHP callbacks in easy_admin.yml:
      easy_admin:
          entities:
              AppBundle\Entity\Product:
                  list:
                      fields: ['name', '%deveosys_admin.product_price%']
      
    • Define the callback in a service:
      // src/Service/ProductPriceService.php
      public function getPrice(Product $product) {
          return '$' . $product->getPrice();
      }
      
  4. API Integration

    • Expose EasyAdmin CRUD as API endpoints using api_platform or custom controllers:
      // src/Controller/Admin/ApiController.php
      #[Route('/admin/api/posts', name: 'admin_api_posts', methods: ['GET'])]
      public function listPosts(EntityManagerInterface $em): JsonResponse {
          $posts = $em->getRepository(Post::class)->findAll();
          return new JsonResponse($posts);
      }
      
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
comsave/common
alecsammon/php-raml-parser
chrome-php/wrench
lendable/composer-license-checker
typhoon/reflection
mesilov/moneyphp-percentage
mike42/gfx-php
bookdown/themes
aura/view
aura/html
aura/cli
povils/phpmnd
nayjest/manipulator
omnipay/tests
psr-mock/http-message-implementation
psr-mock/http-factory-implementation
psr-mock/http-client-implementation
voku/email-check
voku/urlify
rtheunissen/guzzle-log-middleware