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

Crud Bundle Laravel Package

dyosis/crud-bundle

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation

    composer require dyosis/crud-bundle
    

    Add to config/bundles.php:

    Dyosis\CrudBundle\DyosisCrudBundle::class => ['all' => true],
    
  2. First Use Case Generate a basic CRUD for an existing User entity:

    php bin/console dyosis:crud:generate User
    

    This creates:

    • Controller (src/Controller/UserCrudController.php)
    • Twig templates (templates/crud/user/)
    • Routes (config/routes/crud.yaml)
  3. Where to Look First

    • Console Commands: php bin/console list dyosis (lists all available commands)
    • Generated Files: Check templates/crud/ for customizable templates
    • Configuration: config/packages/dyosis_crud.yaml (if it exists)

Implementation Patterns

Workflow Integration

  1. Entity-First CRUD

    # Generate CRUD for a new entity
    php bin/console make:entity Post --fields="name:string title:string"
    php bin/console dyosis:crud:generate Post
    
    • Automatically detects entity fields for form generation.
  2. Customizing Templates Override default Twig templates by copying files from:

    vendor/dyosis/crud-bundle/Resources/views/crud/
    

    to:

    templates/crud/
    
  3. Route Configuration Edit config/routes/crud.yaml to customize paths:

    dyosis_crud_user:
        path: /admin/users
        controller: App\Controller\UserCrudController
    
  4. Field-Specific Customization Use annotations in your entity to tweak CRUD behavior:

    use Dyosis\CrudBundle\Annotation\Crud;
    
    /**
     * @Crud\Column(type="hidden")
     */
    private $createdAt;
    

Common Patterns

  • Bulk Actions: Extend the base controller to add custom actions:
    public function bulkDeleteAction(Request $request)
    {
        $ids = $request->request->get('ids');
        // Custom logic
    }
    
  • Validation: Leverage Symfony’s validation system—CRUD forms auto-bind entity validation rules.
  • API Integration: Pair with api-platform by generating API resources alongside CRUD:
    php bin/console make:entity Post --api
    php bin/console dyosis:crud:generate Post
    

Gotchas and Tips

Pitfalls

  1. Entity Naming Conflicts

    • Avoid reserved keywords (e.g., Crud, Bundle) as entity names—generates malformed class names.
    • Fix: Rename the entity or use aliases in routes.
  2. Template Overrides Not Loading

    • Ensure templates/crud/ is in your Twig loader path (check config/packages/twig.yaml).
    • Fix: Clear cache after copying templates:
      php bin/console cache:clear
      
  3. Field Type Mismatches

    • The bundle assumes Doctrine types map directly to Symfony form fields. Custom types (e.g., JsonType) may break.
    • Fix: Extend the bundle’s form type logic or override templates for specific fields.
  4. Route Cache Issues

    • After modifying crud.yaml, routes may not update until:
      php bin/console router:debug | grep dyosis
      php bin/console cache:clear
      

Debugging Tips

  • Check Generated Code: Inspect var/cache/dev/ for compiled Twig templates or dump the controller:
    dump($this->get('dyosis.crud.generator')->generate(User::class));
    
  • Log Commands: Enable debug mode to see command output:
    APP_ENV=dev php bin/console dyosis:crud:generate User
    
  • Database Migrations: Always run migrations after generating CRUD for new entities:
    php bin/console make:migration
    php bin/console doctrine:migrations:migrate
    

Extension Points

  1. Custom Controllers Override the default controller by specifying a custom class in crud.yaml:

    dyosis_crud_user:
        controller: App\Controller\CustomUserCrudController
    
  2. Event Listeners Subscribe to CRUD events (e.g., CrudEntityCreatedEvent) in services.yaml:

    services:
        App\EventListener\CrudListener:
            tags:
                - { name: kernel.event_listener, event: dyosis.crud.entity.created, method: onEntityCreated }
    
  3. Field Transformers Extend Dyosis\CrudBundle\Form\Type\CrudFieldType to add custom field logic:

    class CustomFieldType extends CrudFieldType
    {
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults(['custom_option' => true]);
        }
    }
    

    Register it in services.yaml:

    Dyosis\CrudBundle\Form\Type\CrudFieldType:
        alias: app.custom_crud_field_type
        public: true
    
  4. Authorization Use Symfony’s voter system to restrict CRUD actions:

    // src/Voter/CrudVoter.php
    public function supports(string $attribute, $subject): bool
    {
        return $attribute === 'EDIT' && $subject instanceof User;
    }
    

    Tag the voter in services.yaml:

    App\Voter\CrudVoter:
        tags: [voter]
    
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.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope