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

Core Bundle Laravel Package

blast-project/core-bundle

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation

    composer require blast-project/core-bundle
    

    Add to config/bundles.php:

    return [
        // ...
        Blast\CoreBundle\BlastCoreBundle::class => ['all' => true],
    ];
    
  2. Basic Configuration Create a YAML config file (e.g., config/blast/core.yml):

    blast_core:
        admin:
            app:
                namespace: 'App\Admin'
                base_class: 'Sonata\AdminBundle\Admin\Admin'
                traits: ['Sonata\AdminBundle\Admin\Traits\HistoryTrait']
    
  3. First Use Case Define an admin class in YAML (e.g., config/admin/sonata/product.yml):

    sonata.admin.product:
        class: App\Admin\ProductAdmin
        label: Product
        label_catalogue: AppBundle
        model_class: App\Entity\Product
        translation: false
        show_in_dashboard: true
        show_as_link: false
        options:
            field_description:
                template: 'admin/product/description.html.twig'
    

Implementation Patterns

YAML-Driven Admin Configuration

  • Admin Inheritance: Extend base admin classes via YAML:

    sonata.admin.product:
        extends: sonata.admin.app_base
        options:
            form:
                type: App\Form\ProductType
    
  • Trait Integration: Apply traits dynamically:

    sonata.admin.product:
        traits:
            - Sonata\AdminBundle\Admin\Traits\DateTimeTrait
            - App\Admin\Traits\CustomExportTrait
    
  • Entity Relationships: Configure relationships without PHP:

    sonata.admin.product:
        options:
            fields:
                categories:
                    type: sonata_type_model_list
                    admin: sonata.admin.category
    

Composite Settings

  • Reusable Config Blocks: Define reusable settings in separate files (e.g., config/blast/blocks/export.yml):
    export_block:
        options:
            export:
                type: sonata_type_orm_csv
                fields: ['id', 'name']
    
    Then merge into admin configs:
    sonata.admin.product:
        <<: *export_block
    

Twig Template Overrides

  • Dynamic Templates: Override templates per admin:
    sonata.admin.product:
        options:
            template:
                list: 'admin/product/list.html.twig'
                edit: 'admin/product/edit.html.twig'
    

Workflow Integration

  1. Admin Generation: Use the blast:generate:admin command to scaffold admins from YAML:

    php bin/console blast:generate:admin Product
    
  2. Validation: Validate YAML configs with:

    php bin/console blast:validate:admin
    
  3. Hot Reloading: Enable blast_core.debug in config to auto-reload YAML changes during dev.


Gotchas and Tips

Pitfalls

  • Circular Dependencies: Avoid circular references in extends or trait inheritance. Use blast:validate:admin to catch issues early.

  • Namespace Conflicts: Ensure namespace in blast_core.admin.app matches your actual admin namespace. Misconfigurations cause ClassNotFoundException.

  • Trait Loading Order: Traits are loaded alphabetically. Explicitly order critical traits in YAML:

    traits:
        - App\Admin\Traits\CriticalTrait  # Loads first
        - Sonata\AdminBundle\Admin\Traits\HistoryTrait
    
  • Entity Metadata: The bundle assumes Doctrine metadata is up-to-date. Run:

     php bin/console doctrine:schema:update --force
    

    if entity changes aren’t reflected.

Debugging

  • Enable Debug Mode:

    blast_core:
        debug: true
    

    Logs YAML parsing and admin generation steps to var/log/dev.log.

  • Dumping Configs: Use the blast:dump:config command to inspect merged configs:

    php bin/console blast:dump:config sonata.admin.product
    

Extension Points

  • Custom YAML Tags: Extend YAML parsing by creating a custom tag:

    # config/blast/tags/custom.yml
    custom_tag:
        class: App\Blast\Yaml\CustomTag
        tag: '!custom'
    
  • Event Listeners: Subscribe to blast.admin.pre_generate and blast.admin.post_generate events to modify admin classes dynamically:

    // src/EventListener/AdminListener.php
    public function onAdminGenerate(AdminGenerateEvent $event) {
        $event->getAdmin()->addTrait('App\Admin\Traits\CustomTrait');
    }
    
  • Override Generators: Replace the default admin generator by binding your own service:

    services:
        blast.admin.generator:
            class: App\Generator\CustomAdminGenerator
            tags: ['blast.admin.generator']
    

Performance Tips

  • Cache YAML Parsing: Enable blast_core.cache to cache parsed YAML configs (default: true in dev env).

  • Selective Loading: Use blast_core.admin.load_only to load specific admins on demand:

    blast_core:
        admin:
            load_only: ['sonata.admin.product', 'sonata.admin.category']
    

Configuration Quirks

  • Boolean Values: YAML booleans (true/false) must be lowercase. Uppercase (TRUE/FALSE) is ignored.

  • Array Syntax: Prefer flow style for multi-line arrays:

    options:
        fields:
            - { name: 'id', type: 'integer' }
            - { name: 'name', type: 'string' }
    

    Avoid block style for complex nested structures.

  • Inheritance Merge: Child configs override parent configs. Use <<: *parent to merge instead of override:

    sonata.admin.product_variant:
        <<: *sonata.admin.product
        label: Product Variant
    
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.
cocosmos/filament-sticky-save-bar
patrickbussmann/oauth2-apple
3brs/enterprise-security-bundle
anousss007/vigilance
supportpal/eloquent-model
ardenexal/fhir-models
laravel-at/laravel-image-sanitize
romalytar/yammi-audit-log-laravel
ardenexal/fhir-validation
arshaviras/weather-widget
laravel-chronicle/core
sunchayn/nimbus
daikazu/eloquent-salesforce-objects
unseen-codes/chat
romalytar/yammi-jobs-monitoring-laravel
kisame76/filament-db-table-state
nqxcode/laravel-lucene-search
dpfx/laravel-livewire-wizards
workos/workos-php-laravel
sofa/laravel-global-scope