A collection of blocks ready to use with umanit/block-bundle.
- Install and configure FOSCKEditorBundle
- Install and configure ArtgrisMediaBundle
- The assets' installation is not necessary because they're all rewrite in this bundle, you only need to declare the bundle and his routing.
- Install and configure UmanitBlockBundle
- Use Symfony UX
Register the bundle to your config/bundles.php
<?php
return [
// ...
Umanit\BlockCollectionBundle\UmanitBlockCollectionBundle::class => ['all' => true],
];
Add one of the Twig's form theme
# config/packages/twig.yaml
twig:
form_themes:
# When using Sylius, the only available for the moment
- '@UmanitBlockCollection/sylius/artgris/field_media.html.twig'
Add @umanit/block-collection-bundle
dev-dependency in your package.json
. This part is automatically done if you use
Flex in your projet.
{
//...
"devDependencies": {
// ...
"@umanit/block-collection-bundle": "file:vendor/umanit/block-collection-bundle/Resources/assets"
}
}
Add stimulus controllers to your assets/controllers.json
. This part is automatically done if you use Flex in your
projet.
{
"controllers": {
// ...
"@umanit/block-collection-bundle": {
"collection": {
"enabled": true,
"fetch": "eager"
},
"ckeditor": {
"enabled": true,
"fetch": "eager"
},
"crop": {
"enabled": true,
"fetch": "eager",
"autoimport": {
"cropperjs/dist/cropper.min.css": true
}
},
"file-manager": {
"enabled": true,
"fetch": "eager"
},
"media": {
"enabled": true,
"fetch": "eager"
},
"modal": {
"enabled": true,
"fetch": "eager",
"autoimport": {
"@umanit/block-collection-bundle/src/modal-style.css": true
}
}
}
}
// ...
}
Don't forget to install the JavaScript dependencies as well and compile
yarn install --force
yarn encore dev
A collection of question/answer.
The answer field uses the CKEditorType
from
FOSCKEditorBundle.
An image with an alt
field. The form type uses the MediaType
from
ArtgrisMediaBundle.
A collection of images (without alt
field, for the moment?). The form type uses the MediaCollectionType
from
ArtgrisMediaBundle.
A simple URLs and it's associated label.
A blockquote and an optional author.
A block composed of a title, a wysiwyg text, and an image with an alt
field.
The text form type uses the CKEditorType
from
FOSCKEditorBundle.
The image form type uses the MediaType
from ArtgrisMediaBundle.
A link to YouTube or Vimeo to render a player in an iframe.
A WYSIWYG which uses the CKEditorType
from
FOSCKEditorBundle.
You can use Symfony Form Type Extension to modify any of available form type.
You can override any of the Twig template to customize the rendering of each block. The default path will be
templates/bundles/UmanitBlockCollectionBundle/blocks/
.
If you need to create your own blocks, you can use the Umanit\BlockCollectionBundle\BlockManager\TwigRenderableTrait
in your block manager.
It will allow you to use a Twig view to render your block. All you need to do is to define the property
protected $template
in your manager which should be the name of a view placed in
templates/bundles/UmanitBlockCollectionBundle/blocks/
(without the suffix .html.twig
).
For example, using this manager:
<?php
declare(strict_types=1);
namespace App\BlockManager;
use App\Entity\Block\Simple;
use App\Form\Type\Block\SimpleType;
use Umanit\BlockBundle\Block\AbstractBlockManager;
class SimpleBlockManager extends AbstractBlockManager
{
use TwigRenderableTrait;
/** @var string */
protected $template = 'simple';
public function getManagedBlockType(): string
{
return Simple::class;
}
public function getManagedFormType(): string
{
return SimpleType::class;
}
}
Once the entity and the form type are created, we only need to create the view
templates/bundles/UmanitBlockCollectionBundle/blocks/simple.html.twig
.