adcog-cpi/doctrine-bundle
Doctrine bundle providing reusable entity tools: automatic created/updated timestamps, slug and salt generation, filesystem storage paths, loggable messages, and paginator defaults. Includes a command to fix/rebuild slugs across the database.
Set of Doctrine tools.
# Default configuration for "EBDoctrineBundle"
eb_doctrine:
filesystem:
# Web file path.
web_path: /files # Example: /files
# Secured file path.
secured_path: '%kernel.root_dir%/cache/%kernel.environment%/files' # Example: /var/my-data
# Wether env is used in paths
use_env_discriminator: true # Example: true
# Wether class is used in paths
use_class_discriminator: true # Example: true
# File tree depth
depth: 0 # Example: 5
loggable:
# Persisted message or translation key.
persisted: 'L''élément %%entity%% a été créé avec succès !' # Example: L'élément %%entity%% a été créé avec succès !
# Updated message or translation key.
updated: 'L''élément %%entity%% a été modifié avec succès !' # Example: L'élément %%entity%% a été modifié avec succès !
# Removed message or translation key.
removed: 'L''élément %%entity%% a été supprimé avec succès !' # Example: L'élément %%entity%% a été supprimé avec succès !
paginator:
# Default paginator limit
default_limit: null # Example: 10
# Maximum paginator limit
max_limit: null # Example: 100
# Wether we have to use the output walker
use_output_walker: false # Example: false
created dateEB\DoctrineBundle\Entity\CreatedInterfaceEB\DoctrineBundle\Entity\Doctrine\CreatedTraitcreated fieldupdated dateEB\DoctrineBundle\Entity\UpdatedInterfaceEB\DoctrineBundle\Entity\Doctrine\UpdatedTraitupdated fieldnull when this entity has never been updatedslugEB\DoctrineBundle\Entity\SlugInterfaceEB\DoctrineBundle\Entity\Doctrine\SlugTraitgetStringToSlug method telling the listener what string needs to be cleanedslug fieldeb:doctrine:fix is able to re-evaluate each slug field in your databasesaltEB\DoctrineBundle\Entity\SaltInterfaceEB\DoctrineBundle\Entity\Doctrine\SaltTraitsalt fieldEB\DoctrineBundle\Salt\SaltGenerator)EB\DoctrineBundle\Entity\FileInterface (if you don't want a direct access via your webserver)EB\DoctrineBundle\Entity\FileReadableInterface (stored in your web folder, add an URI path)EB\DoctrineBundle\Entity\FileVersionableInterface (track different file versions)EB\DoctrineBundle\Entity\Doctrine\FileTraitEB\DoctrineBundle\Entity\Doctrine\FileReadableTraitEB\DoctrineBundle\Entity\Doctrine\FileVersionableTrait\SplFileInfo or an UploadedFile to your entity using setFile methodEB\DoctrineBundle\Entity\FileListener will automatically :
filename, extension, size and mimeuniqid (this is a trick to create mapped updates when using forms with unmapped file field)path, the current realpath of the file in the filesystemuri, from the web directoryversion if necessaryEB\DoctrineBundle\Entity\UserInterfaceEB\DoctrineBundle\Entity\UserLoginInterfaceEB\DoctrineBundle\Entity\UserPasswordDateInterfaceEB\DoctrineBundle\Entity\Doctrine\UserTraitEB\DoctrineBundle\Entity\Doctrine\UserAdvancedTraitEB\DoctrineBundle\Entity\Doctrine\UserLoginTraitEB\DoctrineBundle\Entity\Doctrine\UserPasswordDateTraitrawPassword will always be encoded into a password when savedEB\DoctrineBundle\Entity\LoggableInterfaceYou can simply display those messages using Twig :
{% for level,flashes in app.session.flashBag.all() %}
<ul class="alert alert-{{ level }}">
{% for flash in flashes %}
<li>{{ flash }}</li>
{% endfor %}
</ul>
{% endfor %}
This bundle helps me to deal with strings (for blog title in uri for example).
<?php
// SomeController.php
/** @var EB\DoctrineBundle\Converter\StringConverter $string */
$string = $this->get('eb_string');
// Create a clean URI using an article title for example
$string->uri('Lorem Ipsum Dolor Sit'); // "lorem-ipsum-dolor-sit"
$string->uri('Lôrém Ïpsum Dõlor Sït'); // "lorem-ipsum-dolor-sit"
$string->uri('Lorem_Ipsum_Dolor_Sit'); // "lorem_ipsum_dolor_sit"
$string->uri('Lorem-Ipsum-Dolor-Sit'); // "lorem-ipsum-dolor-sit"
$string->uri('Lorem.Ipsum.Dolor.Sit'); // "lorem.ipsum.dolor.sit"
$string->uri('-Lorem Ipsum Dolor Sit'); // "lorem-ipsum-dolor-sit"
$string->uri('Lorem Ipsum Dolor Sit-'); // "lorem-ipsum-dolor-sit"
// Create a clean cut string
$string->uri('LoremIpsumDolorSit',15); // "LoremIpsumDolor ..."
$string->uri('Lorem Ipsum Dolor Sit',15); // "Lorem Ipsum ..."
$string->uri('Lôrém Ïpsum Dõlor Sït',15); // "Lôrém Ïpsum ..."
$string->uri('Lôrém Ïpsum Dõlor Sït',15,' (...)'); // "Lôrém Ïpsum (...)"
// Help create a search index for your objects
$string->search('Lorem Ipsum Dolor Sit'); // "lorem ipsum dolor sit"
$string->search('Lôrém Ïpsum Dõlor Sït'); // "lorem ipsum dolor sit"
$string->search('Lorem-Ipsum-Dolor-Sit'); // "lorem ipsum dolor sit"
$string->search('Lorem Ipsum Dolor Sit Lorem'); // "lorem ipsum dolor sit"
$string->search('Lorem Ipsum Dolor Si'); // "lorem ipsum dolor"
// Camelize a string
$string->camelize('Lorem Ipsum Dolor Sit'); // "loremIpsumDolorSit"
$string->camelize('Lorem_Ipsum_Dolor_Sit'); // "loremIpsumDolorSit"
$string->camelize('Lôrém Ïpsum Dõlor Sït'); // "loremIpsumDolorSit"
$string->camelize('Lôrém_Ïpsum_Dõlor_Sït'); // "loremIpsumDolorSit"
$string->camelize('loremIpsumDolorSit'); // "loremipsumdolorsit"
// Underscore a string
$string->underscore('Lorem Ipsum Dolor Sit'); // "lorem_ipsum_dolor_sit"
$string->underscore('Lôrém Ïpsum Dõlor Sït'); // "lorem_ipsum_dolor_sit"
$string->underscore('lorem_ipsum_dolor_sit'); // "lorem_ipsum_dolor_sit"
{# SomeTemplate.html.twig #}
{# Create a clean URI using an article title for example #}
uri('Lorem Ipsum Dolor Sit') {# "lorem-ipsum-dolor-sit" #}
uri('Lôrém Ïpsum Dõlor Sït') {# "lorem-ipsum-dolor-sit" #}
uri('Lorem_Ipsum_Dolor_Sit') {# "lorem_ipsum_dolor_sit" #}
uri('Lorem-Ipsum-Dolor-Sit') {# "lorem-ipsum-dolor-sit" #}
uri('Lorem.Ipsum.Dolor.Sit') {# "lorem.ipsum.dolor.sit" #}
uri('-Lorem Ipsum Dolor Sit') {# "lorem-ipsum-dolor-sit" #}
uri('Lorem Ipsum Dolor Sit-') {# "lorem-ipsum-dolor-sit" #}
{# Create a clean cut string #}
cut('LoremIpsumDolorSit',15) {# "LoremIpsumDolor ..." #}
cut('Lorem Ipsum Dolor Sit',15) {# "Lorem Ipsum ..." #}
cut('Lôrém Ïpsum Dõlor Sït',15) {# "Lôrém Ïpsum ..." #}
cut('Lôrém Ïpsum Dõlor Sït',15,' (...)') {# "Lôrém Ïpsum (...)" #}
{# Help create a search index for your objects #}
search('Lorem Ipsum Dolor Sit') {# "lorem ipsum dolor sit" #}
search('Lôrém Ïpsum Dõlor Sït') {# "lorem ipsum dolor sit" #}
search('Lorem-Ipsum-Dolor-Sit') {# "lorem ipsum dolor sit" #}
search('Lorem Ipsum Dolor Sit Lorem') {# "lorem ipsum dolor sit" #}
search('Lorem Ipsum Dolor Si') {# "lorem ipsum dolor" #}
{# Camelize a string #}
camelize('Lorem Ipsum Dolor Sit') {# "loremIpsumDolorSit" #}
camelize('Lorem_Ipsum_Dolor_Sit') {# "loremIpsumDolorSit" #}
camelize('Lôrém Ïpsum Dõlor Sït') {# "loremIpsumDolorSit" #}
camelize('Lôrém_Ïpsum_Dõlor_Sït') {# "loremIpsumDolorSit" #}
camelize('loremIpsumDolorSit') {# "loremipsumdolorsit" #}
{# Underscrore a string #}
underscore('Lorem Ipsum Dolor Sit') {# "lorem_ipsum_dolor_sit" #}
underscore('Lôrém Ïpsum Dõlor Sït') {# "lorem_ipsum_dolor_sit" #}
underscore('lorem_ipsum_dolor_sit') {# "lorem_ipsum_dolor_sit" #}
How can I help you explore Laravel packages today?