Пакет, предоставляющий возможности CMS (управление контентом сайта). Можно подключать к другим проектам, использующим EasyAdmin.
- Code owner: Александр Володин
- Product Owner: Дмитрий Бормотов
- Команда: CISDevelopment
- Главный канал: #marketing-cms-dev
- Канал для MR: #marketing-code-review
- PHP 8 + Symfony 5.4 + EasyAdmin 4
- Добавляем в composer.json новый репозиторий:
{
"type": "vcs",
"url": "[email protected]:skyeng/marketing-cms-bundle.git"
}
-
Подключаем пакет
composer require skyeng/marketing-cms-bundle:^4.0
-
Добавляем бандл в bundles.php
Skyeng\MarketingCmsBundle\MarketingCmsBundle::class => ['all' => true]
- Прописываем роуты для API
# config/routes/marketing_cms.yaml
marketing_cms:
resource: "@MarketingCmsBundle/Resources/config/routes.yaml"
-
При наличии NelmioApiDocBundle копируем в его конфиг definitions из
vendor/skyeng/marketing-cms-bundle/src/Resources/config/packages/nelmio_api_doc.yaml
-
Генерим миграции для сущностей CMS
bin/console make:migration
Правильность сгенерированных миграций можно проверить по маппигам: src/Infrastructure/Doctrine/Entity/mapping/
-
Добавляем пункты меню в DashboardController EasyAdmin-а
use Skyeng\MarketingCmsBundle\Domain\Entity\File;
use Skyeng\MarketingCmsBundle\Domain\Entity\Redirect;
use Skyeng\MarketingCmsBundle\Domain\Entity\Template;
class DashboardController extends AbstractDashboardController
{
public function configureMenuItems(): iterable
{
...
yield MenuItem::section('CMS');
yield MenuItem::linkToCrud('Файлы', 'fas fa-folder-open', File::class);
yield MenuItem::linkToCrud('Редиректы', 'fas fa-folder-open', Redirect::class);
yield MenuItem::linkToCrud('Шаблоны компонентов', 'fas fa-folder-open', Template::class);
...
}
}
-
Определить переменную окружения UPLOADS_BASE_URL, она будет использована как uri_prefix для медиа файлов
-
По-умолчанию в маппинге vich_uploader для медиа файлов указан upload_destination: 'upload.nfs', его можно переопределить:
# config/packages/vich_uploader.yaml
vich_uploader:
mappings:
cms_media_files:
upload_destination: "uploads.nfs" # Указать свой
- Также можно переопределить конфиг vich_uploader для prod окружения:
# config/packages/prod/vich_uploader.yaml
vich_uploader:
mappings:
cms_media_files:
upload_destination: "uploads.s3" # Указать свой
- Добавляем пункты меню в DashboardController easyadmin-а
use Skyeng\MarketingCmsBundle\Domain\Entity\MediaCatalog;
use Skyeng\MarketingCmsBundle\Domain\Entity\MediaFile;
class DashboardController extends AbstractDashboardController
{
public function configureMenuItems(): iterable
{
...
yield MenuItem::section('CMS Media');
yield MenuItem::linkToCrud('Файлы', 'fas fa-folder-open', MediaFile::class);
yield MenuItem::linkToCrud('Каталоги', 'fas fa-folder-open', MediaCatalog::class);
...
}
}
-
Для управления требованиями к загружаемым файлам настраиваем валидацию. Скопируйте конфиг validation.yaml в
config/validator/validation.yaml
-
Вы можете определить свой набор типов файлов и их максимальный объем. На максимальный объем файла также влияют настройки php и nginx