Weave 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

E Commerce Admin Extensionsbundle Laravel Package

nitra/e-commerce-admin-extensionsbundle

Admin extensions bundle for Nitra e-commerce: adds ready-made features and integrations to speed up back-office development. Includes configurable modules and utilities to extend the admin panel with common commerce tools and workflows.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation Add the package via Composer:

    composer require nitra/e-commerce-admin-extensionsbundle
    

    Register the bundle in config/app.php under providers:

    Nitra\AdminExtensionsBundle\AdminExtensionsBundle::class,
    
  2. Publish Assets Run the publish command to generate config and migrations:

    php artisan vendor:publish --provider="Nitra\AdminExtensionsBundle\AdminExtensionsBundle" --tag="config"
    php artisan vendor:publish --provider="Nitra\AdminExtensionsBundle\AdminExtensionsBundle" --tag="migrations"
    

    Migrate the database:

    php artisan migrate
    
  3. First Use Case: Extending Admin Panels Use the AdminExtension trait in your admin controller to enable extensions:

    use Nitra\AdminExtensionsBundle\Traits\AdminExtension;
    
    class ProductAdminController extends Controller
    {
        use AdminExtension;
    
        public function index()
        {
            $this->extendAdminPanel('product.index'); // Extend the product index view
            return view('admin.product.index');
        }
    }
    

Implementation Patterns

Core Workflows

  1. Dynamic Admin Panel Extensions Override or extend admin views without modifying core templates:

    // In a service provider or controller
    $this->extendAdminPanel('product.edit', function ($view) {
        $view->with('customData', ['key' => 'value']);
    });
    
  2. Event-Based Extensions Listen to admin events to inject logic:

    // In a service provider
    event(new \Nitra\AdminExtensionsBundle\Events\AdminPanelExtensionEvent('product.index'));
    
  3. Custom Admin Actions Add custom buttons or actions to admin grids:

    $this->extendAdminGrid('product.grid', function ($grid) {
        $grid->addAction('custom_action', 'Custom Label', 'admin.product.custom_action', ['id' => '$id']);
    });
    

Integration Tips

  • Leverage Laravel’s Service Container Bind custom extension services for reusable logic:

    $this->app->bind('custom.extension.service', function () {
        return new CustomExtensionService();
    });
    
  • Use Blade Directives Create reusable directives for extensions:

    Blade::directive('adminExtension', function ($expression) {
        return "<?php echo \$this->extendAdminPanel($expression); ?>";
    });
    
  • Localization Support Extend translations dynamically:

    $this->extendAdminTranslations('product', [
        'custom_label' => 'Custom Label',
    ]);
    

Gotchas and Tips

Common Pitfalls

  1. View Override Conflicts

    • Ensure extension hooks match the exact view names (e.g., product.index vs. product.index.blade.php).
    • Use dd($this->getExtendedViews()) to debug registered extensions.
  2. Event Timing Issues

    • Extensions registered via events must fire before the admin panel renders.
    • Use Event::listenFirst() if needed:
      Event::listenFirst(\Nitra\AdminExtensionsBundle\Events\AdminPanelExtensionEvent::class, function ($event) {
          // Your logic here
      });
      
  3. CSRF Token Mismatches

    • Custom admin actions may fail if CSRF tokens aren’t passed. Use:
      @csrf_field()
      
      in extended views.
  4. Database Schema Conflicts

    • Published migrations may conflict with existing tables. Review database/migrations/ before running migrate.

Debugging Tips

  • Log Extensions Enable debug mode in config/admin-extensions.php:

    'debug' => env('APP_DEBUG', false),
    

    Check logs for extension registration errors.

  • Inspect Registered Extensions Dump extensions in a controller:

    dd(\Nitra\AdminExtensionsBundle\Facades\AdminExtensions::getExtensions());
    
  • Clear Cached Views If extensions don’t appear, clear the view cache:

    php artisan view:clear
    

Extension Points

  1. Custom Extension Providers Create a provider to register extensions globally:

    class CustomAdminExtensionsProvider extends ServiceProvider
    {
        public function register()
        {
            $this->app->make(\Nitra\AdminExtensionsBundle\Contracts\AdminExtensionRegistrar::class)
                ->registerExtensions([
                    'product.index' => function ($view) {
                        $view->with('customData', 'value');
                    },
                ]);
        }
    }
    
  2. Override Default Behaviors Extend the base AdminExtension trait:

    trait CustomAdminExtension
    {
        public function extendAdminPanel($hook, $callback = null)
        {
            // Custom logic before/after parent call
            parent::extendAdminPanel($hook, $callback);
        }
    }
    
  3. Asset Management Load custom CSS/JS for admin panels:

    $this->extendAdminAssets('product.*', [
        'css' => ['/path/to/custom.css'],
        'js' => ['/path/to/custom.js'],
    ]);
    
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.
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names