boolean-type/lorem-ipsum-bundle
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],
];
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 #}
API Endpoint Access the built-in API endpoint:
GET /api/ipsum?words=10
Returns JSON:
{"ipsum": "Lorem ipsum dolor sit amet..."}
Service Integration
LoremIpsumGenerator service in controllers, commands, or services.
public function __construct(private LoremIpsumGenerator $generator) {}
services.yaml:
services:
BooleanType\LoremIpsumBundle\Twig\LoremIpsumExtension:
tags: ['twig.extension']
Now use {{ lorem_ipsum(5) }} directly in templates.Command-Line Usage Generate ipsum via Artisan:
php bin/console lorem:generate 15
Outputs to console:
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
Configuration Customization
Override default settings in config/packages/lorem_ipsum.yaml:
lorem_ipsum:
default_words: 10
paragraphs_enabled: true
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' }
$builder->add('description', TextType::class, [
'attr' => ['placeholder' => $this->generator->generate(3)],
]);
$faker->loremIpsum = $this->generator->generate(20);
$this->mock(LoremIpsumGenerator::class)
->shouldReceive('generate')
->andReturn('test ipsum');
Caching Headaches
php bin/console cache:clear
config/packages/lorem_ipsum.yaml:
lorem_ipsum:
cache_enabled: false
Twig Auto-Loading
{{ lorem_ipsum() }} fails, ensure the Twig extension is registered (see Implementation Patterns).config/bundles.php.API Route Conflicts
/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
Locale Limitations
$generator->setLocale('ru'); // If supported; may require custom implementation.
php bin/console debug:container lorem_ipsum for available services.php bin/console debug:event-dispatcher
to check registered listeners.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
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' }]
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
How can I help you explore Laravel packages today?