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

App Backend Bundle Laravel Package

edge5/app-backend-bundle

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation Clone the repository and install dependencies:

    composer create-project edge5/app-backend-bundle my-project
    cd my-project
    composer install
    
  2. Database Configuration Update .env with your database credentials and run migrations:

    php bin/console doctrine:database:create
    php bin/console doctrine:migrations:migrate
    
  3. First Use Case: User Management

    • Register a user via FOSUserBundle’s built-in registration form (/register).
    • Log in and access the AdminGenerator dashboard (/admin) to manage entities (e.g., users, roles).

Where to Look First

  • AdminGenerator: Located in src/Admin/—customize CRUD interfaces for entities.
  • FOSUserBundle: User authentication/authorization logic in src/User/.
  • Translations: Database-backed translations in src/Translation/.

Implementation Patterns

1. Extending AdminGenerator

  • Customize Entity CRUD: Override default templates in templates/admin/ or extend controllers in src/Admin/Controller/. Example: Add a custom field to the User admin:

    // src/Admin/UserAdmin.php
    public function configureFields(string $pageName): iterable
    {
        return [
            'id',
            'email',
            'username',
            'customField' => 'text', // New field
        ];
    }
    
  • Workflows:

    • Use AdminGenerator’s generate:crud command to scaffold new entities:
      php bin/console generate:crud
      
    • Integrate with Symfony Forms for complex validation.

2. FOSUserBundle Integration

  • Custom User Provider: Extend UserManager in src/User/UserManager.php to add logic (e.g., auto-activation):

    public function createUser(array $userData)
    {
        $user = parent::createUser($userData);
        $user->setEnabled(true); // Auto-enable
        return $user;
    }
    
  • Role Hierarchy: Define roles in config/packages/security.yaml:

    role_hierarchy:
        ROLE_ADMIN: [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]
    

3. Database-Side Translations

  • Entity Translation: Use Gedmo\Translatable for multi-language support. Example:

    // src/Entity/Product.php
    use Gedmo\Mapping\Annotation as Gedmo;
    
    /**
     * @Gedmo\TranslationEntity(class="App\Entity\ProductTranslation")
     */
    private $translations;
    
  • Workflow:

    1. Install gedmo/doctrine-extensions.
    2. Add gedmo/translatable to your entity.
    3. Use TranslatableListener in config/packages/doctrine.yaml.

4. Common Workflows

Task Command/Code Snippet
Generate CRUD for Post php bin/console make:crud Post
Add translation field php bin/console doctrine:mapping:import
Customize login form Extend FOSUserBundle:Security:login template

Gotchas and Tips

Pitfalls

  1. AdminGenerator Caching: Clear cache after modifying admin templates:

    php bin/console cache:clear
    
  2. FOSUserBundle Conflicts:

    • Ensure User entity extends FOS\UserBundle\Model\User (not AbstractUser).
    • Override loadUserByUsername() if using custom email/username logic.
  3. Translation Quirks:

    • Run php bin/console doctrine:schema:update --force after adding Translatable fields.
    • Use translatable:dump to export translations:
      php bin/console gedmo:translatable:dump
      

Debugging Tips

  • AdminGenerator Issues: Check var/log/dev.log for AdminGeneratorBundle errors. Enable debug toolbar (APP_DEBUG=true in .env).

  • FOSUserBundle: Dump user data in a controller to verify:

    $user = $this->getUser();
    dump($user->getRoles());
    

Extension Points

  1. Custom Admin Actions: Add buttons to AdminGenerator via configureActions():

    public function configureActions(): iterable
    {
        return [
            'export' => [
                'type' => 'text',
                'label' => 'Export',
                'icon' => 'fa-download',
            ],
        ];
    }
    
  2. Event Listeners: Subscribe to fos_user_registered or admin_generator.pre_generate:

    // src/EventListener/CustomListener.php
    public function onUserRegistered(UserEvent $event)
    {
        $user = $event->getUser();
        $user->addRole('ROLE_USER');
    }
    

    Register in services.yaml:

    services:
        App\EventListener\CustomListener:
            tags:
                - { name: 'kernel.event_listener', event: 'fos_user.registered', method: 'onUserRegistered' }
    

Pro Tips

  • Bulk Operations: Use AdminGenerator’s batch_actions to enable bulk delete/update:

    # config/packages/admin_generator.yaml
    batch_actions:
        delete: true
        enable: true
    
  • Performance: For large datasets, paginate AdminGenerator lists:

    public function configureDatagridFilters(string $pageName): iterable
    {
        return [
            'paginator' => ['page' => 1, 'limit' => 50],
        ];
    }
    
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