gingerminds / symfony-cms
Menus, pages, content blocks and search for Gingerminds Symfony projects
Package info
github.com/gingerminds/symfony-cms
Type:symfony-bundle
pkg:composer/gingerminds/symfony-cms
Requires
- php: ^8.4
- api-platform/doctrine-orm: ^4.4
- api-platform/symfony: ^4.4
- doctrine/doctrine-bundle: ^2.18 || ^3.0
- doctrine/orm: ^3.7
- gingerminds/symfony-core: ^1.10.3
- gingerminds/symfony-media-manager: ^1.3
- gingerminds/symfony-multisite: ^1.4
- symfony/asset-mapper: ^8.1
- symfony/doctrine-bridge: ^8.1
- symfony/form: ^8.1
- symfony/framework-bundle: ^8.1
- symfony/html-sanitizer: ^8.1
- symfony/messenger: ^8.1
- symfony/property-access: ^8.1
- symfony/security-bundle: ^8.1
- symfony/serializer: ^8.1
- symfony/string: ^8.1
- symfony/translation: ^8.1
- symfony/twig-bundle: ^8.1
- symfony/validator: ^8.1
- symfony/workflow: ^8.1
Requires (Dev)
- dama/doctrine-test-bundle: ^8.2
- friendsofphp/php-cs-fixer: ^3.0
- league/flysystem-memory: ^3.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-doctrine: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^12.0
- rector/rector: ^2.0
- squizlabs/php_codesniffer: ^3.0
- symfony/browser-kit: ^8.1
- symfony/css-selector: ^8.1
- symfony/maker-bundle: ^1.60
- symfony/phpunit-bridge: ^8.1
- symfony/yaml: ^8.1
Suggests
- symfony/maker-bundle: Required for the make:gm:cms-block generator
Provides
None
Conflicts
None
Replaces
None
README
Menus, pages, content blocks and search for Gingerminds Symfony admin panels, built on
gingerminds/symfony-core,
gingerminds/symfony-media-manager and
gingerminds/symfony-multisite — the Symfony 8
counterpart of gingerminds/laravel-cms:
- menus of a site, trees of translated items, and the main menu of each site;
- pages in a tree of categories building their URLs, a publication workflow extensible by configuration, front preview links;
- content blocks: nine bundled blocks (text, images, medias, video, cards, slider, links, FAQ), your own in a class, overridden or extended, edited in a canvas with previews;
- a WYSIWYG form type (TipTap 3) with server-side sanitizing;
- a cross-content search with a pluggable engine (database by default, TNTSearch, Elasticsearch...) and facets;
- a public API of the menus, pages and search, by site and language.
Requires PHP 8.4, Symfony 8.1, Doctrine ORM 3, API Platform 4.4, symfony/workflow,
symfony/messenger, symfony/html-sanitizer, gingerminds/symfony-core ^1.9,
gingerminds/symfony-media-manager ^1.2 and gingerminds/symfony-multisite ^1.2.
Installation
composer require gingerminds/symfony-cms
Then follow Installation (bundle, routes, site entity, TipTap, database, permissions).
Documentation
Getting started
- Installation
- Configuration — resources, WYSIWYG presets, blocks, search, publication, form include slots.
- Commands — page URLs, search index, block maker.
- Coming from laravel-cms — concept mapping, behaviour changes, importing a Laravel database.
Contents
- Menus — menus, items, main menu of a site.
- Pages — categories, pages, publication workflow, URLs.
- Blocks — bundled blocks, writing, overriding and extending blocks, files and medias.
- Forms —
WysiwygType,BlockCanvasType,PublicationStatusType. - Search — indexed contents, sync, adding a content type, writing an engine.
API
- API — menus, pages, search.
Development
make install # composer install (Docker) make assets # importmap + sass of the test application make qa # phpstan, phpcs, phpunit make serve # test application on http://127.0.0.1:8000/admin
The test application (tests/Application) boots the core, media manager, multisite and CMS bundles
on SQLite, with an in-memory Flysystem storage, project blocks (a block with every field type, an
override and an extension of a bundled block) and an in-memory search engine.
APP_ENV=test php tests/Application/bin/console ...; the test_no_fallback environment disables
translation_fallback, test_memory_search uses the in-memory search engine.