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

Lorem Ipsum Bundle Laravel Package

boolean-type/lorem-ipsum-bundle

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation Add the bundle via Composer:

    composer require boolean-type/lorem-ipsum-bundle
    

    Enable it in config/bundles.php:

    return [
        // ...
        BooleanType\LoremIpsumBundle\LoremIpsumBundle::class => ['all' => true],
    ];
    
  2. First Use Case: Generating Lorem Ipsum in Templates Inject the lorem_ipsum.generator service into a controller or Twig extension:

    use BooleanType\LoremIpsumBundle\Generator\LoremIpsumGenerator;
    
    class ArticleController extends AbstractController
    {
        public function show(LoremIpsumGenerator $generator)
        {
            $lorem = $generator->generate(5); // Generates 5 words
            return $this->render('article/show.html.twig', ['lorem' => $lorem]);
        }
    }
    

    Use in Twig:

    {{ lorem_ipsum(3) }}  {# Renders 3 words of lorem ipsum #}
    
  3. API Endpoint Access the built-in API endpoint:

    GET /api/ipsum?words=10
    

    Returns JSON:

    {"ipsum": "Lorem ipsum dolor sit amet..."}
    

Implementation Patterns

Core Workflows

  1. Service Integration

    • Dependency Injection: Use the LoremIpsumGenerator service in controllers, commands, or services.
      public function __construct(private LoremIpsumGenerator $generator) {}
      
    • Twig Extension: Extend Twig globally by adding to services.yaml:
      services:
          BooleanType\LoremIpsumBundle\Twig\LoremIpsumExtension:
              tags: ['twig.extension']
      
      Now use {{ lorem_ipsum(5) }} directly in templates.
  2. Command-Line Usage Generate ipsum via Artisan:

    php bin/console lorem:generate 15
    

    Outputs to console:

    Lorem ipsum dolor sit amet, consectetur adipiscing elit...
    
  3. Configuration Customization Override default settings in config/packages/lorem_ipsum.yaml:

    lorem_ipsum:
        default_words: 10
        paragraphs_enabled: true
    
  4. Event-Driven Extensions Listen to lorem_ipsum.generate events to modify generation logic:

    use BooleanType\LoremIpsumBundle\Event\GenerateLoremIpsumEvent;
    
    public function onGenerate(GenerateLoremIpsumEvent $event)
    {
        $event->setWords($event->getWords() * 2); // Double words
    }
    

    Register the listener in services.yaml:

    services:
        App\Listener\DoubleLoremListener:
            tags:
                - { name: 'kernel.event_listener', event: 'lorem_ipsum.generate', method: 'onGenerate' }
    

Integration Tips

  • Symfony Forms: Use ipsum for placeholder text:
    $builder->add('description', TextType::class, [
        'attr' => ['placeholder' => $this->generator->generate(3)],
    ]);
    
  • Fixtures: Seed databases with realistic placeholder data:
    $faker->loremIpsum = $this->generator->generate(20);
    
  • Testing: Mock the generator for consistent test data:
    $this->mock(LoremIpsumGenerator::class)
         ->shouldReceive('generate')
         ->andReturn('test ipsum');
    

Gotchas and Tips

Pitfalls

  1. Caching Headaches

    • The bundle caches generated ipsum by default. Clear cache after configuration changes:
      php bin/console cache:clear
      
    • Disable caching in config/packages/lorem_ipsum.yaml:
      lorem_ipsum:
          cache_enabled: false
      
  2. Twig Auto-Loading

    • If {{ lorem_ipsum() }} fails, ensure the Twig extension is registered (see Implementation Patterns).
    • Verify the bundle is enabled in config/bundles.php.
  3. API Route Conflicts

    • The /api/ipsum route may conflict with existing routes. Override it by configuring the router:
      # config/routes/lorem_ipsum.yaml
      lorem_ipsum_api:
          path: /my-custom-ipsum
          controller: BooleanType\LoremIpsumBundle\Controller\ApiController::ipsumAction
      
  4. Locale Limitations

    • The bundle defaults to Latin-based ipsum. For non-Latin locales, extend the generator:
      $generator->setLocale('ru'); // If supported; may require custom implementation.
      

Debugging

  • Service Not Found: Ensure the bundle is installed and enabled. Check php bin/console debug:container lorem_ipsum for available services.
  • Event Listeners: Verify listeners are tagged correctly. Use:
    php bin/console debug:event-dispatcher
    
    to check registered listeners.

Extension Points

  1. Custom Generators Implement BooleanType\LoremIpsumBundle\Generator\LoremIpsumGeneratorInterface for custom logic:

    class CustomGenerator implements LoremIpsumGeneratorInterface
    {
        public function generate(int $words): string
        {
            return 'Custom ipsum: ' . str_repeat('foo ', $words);
        }
    }
    

    Register it in services.yaml:

    services:
        BooleanType\LoremIpsumBundle\Generator\LoremIpsumGenerator:
            alias: App\Generator\CustomGenerator
    
  2. Compiler Passes Modify service definitions at compile time by creating a compiler pass:

    use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
    use Symfony\Component\DependencyInjection\ContainerBuilder;
    
    class AddCustomGeneratorPass implements CompilerPassInterface
    {
        public function process(ContainerBuilder $container)
        {
            $definition = $container->findDefinition('lorem_ipsum.generator');
            $definition->addMethodCall('setCustomStrategy', ['new_strategy']);
        }
    }
    

    Tag it in services.yaml:

    services:
        App\DependencyInjection\AddCustomGeneratorPass:
            tags: [{ name: 'compiler_pass' }]
    
  3. Configuration Overrides Use prepend_extension to modify bundle configuration without forking:

    # config/packages/lorem_ipsum.yaml
    imports:
        - { resource: '@LoremIpsumBundle/Resources/config/services.yaml' }
    
    lorem_ipsum:
        prepend_extension:
            default_words: 20
            cache_enabled: false
    
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.
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
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