Примечания по обновлению
Pimcore 11.5.0
Общее
[База данных]
- Добавление индекса к таблицам
users_workspaces_asset,users_workspaces_documentиusers_workspaces_objectвuserId,cpathиlistдля улучшения проверки разрешений. Обязательно запустите миграциюbin/console doctrine:migrations:execute Pimcore\\Bundle\\CoreBundle\\Migrations\\Version20241114142759. - Добавлен индекс для столбцов
versionCount
[События]
- Свойство
contextдляResolveUploadTargetEventустарело. Вместо этого используйте методsetArgument(). - Расширение Twig
pimcore_blockустарело. Вместо этого используйтеpimcoreblockилиpimcoremanualblock.
[Контроллеры]
- Заменены все
$request->get()на их явный источник ввода.
[Зависимости]
- Добавлена поддержка
doctrine/ormv3иsymfony/webpack-encore-bundlev2.
[WYSIWYG-редактор]
TinyMCEустарел. Вместо этого используйтеQuill(pimcore/quill-bundle).
Элементы
[Ассеты]
- Добавлены настройки
pimcore.assets.metadata.alt,pimcore.assets.metadata.copyright,pimcore.assets.metadata.title, позволяющие определить, какие метаданные следует использовать при преобразовании тега изображения.
[Объекты данных]
- Передача несуществующей или недопустимой единицы измерения при программной настройке связанных типов объектов QuantityValue приведет к возникновению исключения.
Pimcore 11.4.0
Общее
[Логирование]
- Изменены имена файлов журнала. В среде
devтеперь используются имена файловdev-debug.logиdev-error.log. В средеprodзаписывается толькоprod-error.log.
[Twig DeferredExtension]
- Удалена зависимость
rybakit/twig-deferred-extensionи сервисTwig\DeferredExtension\DeferredExtension. Если вы используете отложенные блоки twig, пожалуйста, добавьте зависимость в свой собственный файлcomposer.json, а сервис - в свой собственный файлservice.yaml
[Устаревшие расширения Twig]
- Расширение Twig
pimcore_cacheустарело. Вместо этого используйте тег twigpimcorecache. - Методы
pimcore_placeholder,pimcore_head_script,pimcore_head_stylecaptureStart()иcaptureEnd()устарели. Вместо этого используйте собственный тег twigset. Взгляните на соответствующие документы для каждого расширения twig в качестве примера.
[Уведомления]
- Расширение уведомлений для studio, добавление столбца
isStudioс флагом и столбцаpayloadс соответствующими параметрами получения и установки. Обязательно запустите миграциюbin/console doctrine:migrations:execute Pimcore\\Bundle\\CoreBundle\\Migrations\\Version20240813085200.
Pimcore 11.3.0
Общее
[Системные настройки]
- Неиспользуемый параметр
general.languageустарел.
[Листинг]
- Теперь методы
setOrder()иsetOrderKey()генерируютInvalidArgumentException, если параметры недопустимы.
[Html в Image]
- [Gotenberg] Увеличено минимальное требование к
gotenberg-phpс^2.0до^ 2.4, чтобы добавить поддержку передачи размера скриншота
[Ассеты]
- MIME-тип загружаемых ресурсов определялся с помощью
symfony/mime, прежде в некоторых случаях использовалась Flysystem, что приводило к различным типам MIME для некоторых редко используемых расширений файлов (например, STEP).
[Сетка]:
- Перенес функцию, связанную с сетевыми данными, в
admin-classic-ui-bundleверсии 1.5. - Метод
Service::getHelperDefinitions()здесь устарел и перенесен вadmin-classic-ui-bundle.
[Простой внутренний поиск]
- В связи с рефакторингом данных сетки, пожалуйста, обратите внимание, что для корректного запуска этого дополнительного пакета необходимо установить
admin-classic-ui-bundlev1.5
[DBAL]
- Увеличено минимальное требование к
doctrine/dbalдо^ 3.8и заменены устаревшие / неиспользуемые методы, чтобы приблизиться к поддержкеv4.
[Composer]
- Удалено требование "phpoffice/phpspreadsheet" из-за того, что оно не используется, а точнее, перенесено в конкретный пакет, который фактически его использует. Пожалуйста, проверьте и соответствующим образом адаптируйте требования composer к вашему проекту.
[Зависимости]
- Зависимости теперь разрешаются с помощью messenger queue и могут быть отключены. По умолчанию это выполняется синхронно, но можно сделать это асинхронным, добавив следующую конфигурацию:
framework:
messenger:
transports:
pimcore_dependencies: "doctrine://default?queue_name=pimcore_dependencies"
routing:
'Pimcore\Messenger\ElementDependenciesMessage': pimcore_dependencies
и отключить с помощью:
pimcore:
dependency:
enabled: false
Pimcore 11.2.4 / 11.2.3.1 / 11.1.6.5
Миниатюры ассетов
- Создание миниатюр для ресурсов, документов и видео теперь поддерживает только следующие форматы:
avif,eps,gif,jpeg,jpg,pjpeg,png,svg,tiff,webm,webp. - Вы можете расширить этот список, добавив свои форматы в нижнюю часть:
pimcore:
assets:
thumbnails:
allowed_formats:
- 'avif'
- 'eps'
- 'gif'
- 'jpeg'
- 'jpg'
- 'pjpeg'
- 'png'
- 'svg'
- 'tiff'
- 'webm'
- 'webp'
- 'pdf' # Добавьте желаемый формат здесь
- Коэффициент масштабирования изображений с высоким разрешением теперь ограничен максимальным значением
5,0. Если вам нужно увеличить масштаб изображения, вы можете использовать параметрmax_scaling_factorв конфигурации.
pimcore:
assets:
thumbnails:
max_scaling_factor: 6.0
Pimcore 11.2.0
Элементы
[Документы]:
- Использование конфигурации
outputFormatдля редактированияPimcore\Model\Document\Editable\Dateустарело, вместо этого используйте конфигурациюoutputIsoFormat. - Сервис
Pimcore\Document\Renderer\DocumentRendererустарел, вместо него используйтеPimcore\Document\Renderer\DocumentRendererInterface. - Предварительный просмотр страниц и сравнение версий теперь можно выполнять с помощью Gotenberg v8.
Чтобы заменить безголовый Chrome, обновитесь до версии Gotenberg v8 и обновите клиентскую библиотеку:
composer require gotenberg/gotenberg-php:^2.
[Объекты данных]:
- Методы
getAsIntegerCast()иgetAsFloatCast()классаPimcore\Model\DataObject\Dataтеперь устарели. - Все алгоритмы, отличные от
password_hash, используемые в типе данных пароля, теперь устарели, пожалуйста, используйте вместо нихpassword_hash. Multiselectionoptionsproviderinterfaceустарел, пожалуйста, используйте вместо негоSelectOptionsProviderInterface.
Общее
[Локализация]
- Сервисы
Pimcore\Localization\LocaleServiceиpimcore.localeустарели, вместо них используйтеPimcore\Localization\LocaleServiceInterface.
[Навигация]
- Добавлена опция rootCallback в
Pimcore\Navigation\Builder::getNavigation()
[Symfony]
- Обновлены пакеты Symfony до "^6.4".
[Объекты значений]
- Добавлены новые самоподтверждающиеся объекты значений:
Pimcore\ValueObject\BooleanArrayPimcore\ValueObject\IntegerArrayPimcore\ValueObject\PathPimcore\ValueObject\PositiveIntegerPimcore\ValueObject\PositiveIntegerArrayPimcore\ValueObject\StringArray
[!ПРЕДУПРЕЖДЕНИЕ]
Для обеспечения согласованности переменных среды в boostrap, пожалуйста, исправьтеpublic/index.phpв корне проекта, переместив строкуBootstrap::bootstrap();чуть выше строки$kernel = Bootstrap::kernel(), а не за пределы закрытия. В качестве альтернативы это можно исправить, применив этот патчВозможно, вам также потребуется настроить вашу
bin/consoleна последнюю версию skeleton: https://github.com/pimcore/skeleton/blob/11.x/bin/console
Pimcore 11.1.0
Элементы
[Все]:
- Свойства теперь обновляются только в базе данных с измененным состоянием (при вызове
setPropertiesилиsetProperty). - Добавлена подсказка для второго параметра
array $params = []вElement/ElementInterface::GetById. Pimcore\Helper\CsvFormulaFormatterустарел. Вместо этого используйтеLeague\Csv\EscapeFormula.
[Ассеты]:
Фоновая обработка ассетов документов (например, количество страниц, миниатюры и поиск по тексту) может быть отключена с помощью настройки:
pimcore:
assets:
document:
thumbnails:
enabled: false #отключить создание эскизов для ассетов документов
process_page_count: false #отключить обработку количества страниц
process_text: false #отключить обработку извлечения текста
scan_pdf: false #отключить сканирование PDF-документов на наличие небезопасного JavaScript.Сферические метаданные видеоресурсов теперь вычисляются в фоновом режиме, а не при загрузке.
[Объекты данных]:
- Свойство
$fieldtypeклассаPimcore\Model\DataObject\Dataтеперь устарело. Вместо этого используйте методgetFieldType(). - Выходные данные метода
getSiblings()теперь сортируются на основе родительских параметров сортировки (таких же, какgetChildren), а не по алфавиту. - Поля ввода
checkValidityпроверяют длину столбца.
[Документы]:
- Удален фильтр
allow listизPimcore\Model\Document\Editable\Link, чтобы разрешить передачу любых допустимых атрибутов в конфигурации. - Свойство
Pimcore\Navigation\Page::$_defaultPageTypeустарело.
Общее
[Аутентификация]:
Токены для сброса пароля теперь хранятся в базе данных и используются только один раз (срок их действия истекает при создании нового пароля или при его использовании).
[Static Page Generator]: Статические страницы могут быть сгенерированы на основе основного домена подсайтов, используя приведенную ниже конфигурацию:
pimcore:
documents:
static_page_router:
use_main_domain: true #генерирует страницы по пути /public/var/tmp/pages/my-domain.com/en.htmlи адаптация конфигурации NGINX:
map $args $static_page_root {
default /var/tmp/pages/$host;
"~*(^|&)pimcore_editmode=true(&|$)" /var/nonexistent;
"~*(^|&)pimcore_preview=true(&|$)" /var/nonexistent;
"~*(^|&)pimcore_version=[^&]+(&|$)" /var/nonexistent;
}
map $uri $static_page_uri {
default $uri;
"/" /%home;
}
[Обработчик основного кэша]:
- Удаление избыточных тегов элементов кэша с помощью собственного ключа.
[Установщик]:
- Передача
--install-bundlesв качестве пустой опции теперь устанавливает необходимые пакеты.
[Режим обслуживания]:
- Проверка режима обслуживания выполняется через
tmp_storeв базе данных. Использование файлов режима обслуживания не рекомендуется. - Не рекомендуется использовать следующие методы режима обслуживания в
Pimcore\Tool\Admin:- Вместо
activateMaintenanceModeиспользуйтеMaintenanceModeHelperInterface::activate. - Вместо
deactivateMaintenanceModeиспользуйтеMaintenanceModeHelperInterface::deactivate. isInMaintenanceMode, вместо этого используйтеMaintenanceModeHelperInterface::isActive.- В Pimcore 12 будут удалены
isMaintenanceModeScheduledForLogin,scheduleMaintenanceModeOnLogin,unscheduleMaintenanceModeOnLogin.
- Вместо
Pimcore 11.0.7
- Использование значения
nullв методеPimcore\Model\DataObject\Data::setIndex()теперь устарело. Разрешены только логические значения.
Pimcore 11.0.0
API
[Общее] :
- Внимание: Добавлены собственные типы php для типов аргументов, типов свойств, типов возвращаемых значений и строгого объявления типов, где это возможно. Дважды проверьте свои классы, которые расширяют классы Pimcore, и при необходимости адаптируйте.
[Начальная загрузка] :
- Использование
Pimcore\Bootstrap::bootstrap()для автозагрузки классов больше не будет работать. - Удалена неиспользуемая константа
PIMCORE_APP_BUNDLE_CLASS_FILE.
[События] :
- Событие
pimcore.element.note.postAddбыло удалено. Вместо него используйтеpimcore.note.postAdd. Примечание: Тип события изменен сElementEventнаModelEvent. - Отчет о событии
pimcore.admin.reports.save_settingsбыл переименован вpimcore.reports.save_settings. - Перенес события
SEARCH_LIST_BEFORE_FILTER_PREPARE,SEARCH_LIST_BEFORE_LIST_LOAD,SEARCH_LIST_AFTER_LIST_LOAD,QUICKSEARCH_LIST_BEFORE_LIST_LOADиQUICKSEARCH_LIST_AFTER_LIST_LOADизPimcore\Bundle\AdminBundle\Event\AdminEventsвPimcore\Bundle\SimpleBackendSearchBundle\Event\AdminSearchEvents. AdminEvents::ELEMENT_PERMISSION_IS_ALLOWEDбыл переименован вPimcore\Event\ElementEvents::ELEMENT_PERMISSION_IS_ALLOWED.
[Установщик] :
- Удалена опция
--ignore-existing-configиз командыpimcore:install. Файлsystem.yamlбольше не используется, и, следовательно, этот флаг устарел. Смотрите руководство по подготовке - Изменен тип возвращаемого значения
Pimcore\Extension\Bundle\Installer\InstallerInterface::getOutputнаBufferedOutput | NullOutput. - Добавлено событие
BundleSetupEvent. Пакеты, доступные для установки, можно настроить в процессе установки с помощью Eventlistener или EventSubscriber. - Пакеты можно добавлять и удалять. Вы можете установить флажок, если хотите рекомендовать пакет.
[Логирование] :
- Удалена константа
PIMCORE_PHP_ERROR_LOG - Изменен
monolog/monologна ^3.2 иsymfony/monolog-bundleна ^3.8 (что добавляет поддержку monolog v3). Пожалуйста, соответствующим образом адаптируйте вашу пользовательскую реализацию, например. записи журнала теперь являются объектамиLogRecord, а не массивом. - Удалена возможность использования параметра GET
pimcore_log.
[Разное] :
- Помечены классы
Pimcore\Model\User\AbstractUserиPimcore\Model\User\UserRoleкак абстрактные. - Помечены классы
Pimcore\Fileкак внутренние. Этот класс больше не следует использовать, вместо него используйтеSymfony\Component\Filesystem.
[Дополнительные удаленные функции API] :
- Удалены
getChilds,setChildsиhasChild, вместо которых используютсяgetChildren,setChildrenиhasChildren. - Удален класс PhpArrayTable
- Удален устаревший
PhpArrayFileTable. - Удален метод
Pimcore\Db\Helper::InsertOrUpdate(), пожалуйста, используйте вместо негоPimcore\Db\Helper::upsert(). - Удалены устаревший интерфейс
Pimcore\Db\ConnectionInterface, классPimcore\Db\Connectionи признакPimcore\Db\PimcoreExtensionsTrait. - Удален
JsonListing, подробности смотрите в #12877. - Устаревшее исключение
MissingDependencyExceptionбыло удалено. - Удален устаревший метод
getMasterRequest()в пользуgetMainRequest(). - Удален устаревший метод
Kernel::getRootDir(), вместо него используетсяKernel::getProjectDir(). - Удалены методы
Pimcore\Tool\Admin::isExtJS6(),\Pimcore\Tool\Admin::getLanguageFile(),\Pimcore\Tool::exitWithError(). - Удалены следующие методы из
Pimcore\File:mkdir,put,getFileExtension,setDefaultMode,getDefaultMode,setDefaultFlagsиrename.
[Дополнительные соответствующие обновления зависимостей] :
- Обновлены
friendsofsymfony/jsrouting-bundleдо версии^3.2.1 - Обновлены пакеты Symfony до
^6.2. - Очищены неиспользуемые пакеты Symfony из composer.json, например,
form,web-link, смотрите также #13097 - Изменено значение
mjaschen/phpgeoна^4.0. - Обновлена версия
codeception/кодосцепция кодадо версии ^5.0. Теперь Pimcore использует новую структуру каталогов для тестов (Codeception 5 directory structure). Подробности, пожалуйста, смотрите в #13415 - Повышен уровень
matomo/device-detectorдо ^6.0. - Увеличено минимальное требование к
presta\sitemap-bundleдо^ 3.3, отменена поддержкаверсии 2и удален соответствующий слой BC. - Повышено минимальное требование к
league/flysystem-bundleдо версии 3.0 (которая вводит методыdirectoryExists(),has()и исправляет поддержку опции конфигурацииdirectory_visibility). Пожалуйста, измените требования к адаптерам Flysystem в соответствии с^ 3.0в вашем проектеcomposer.json.
Интерфейс администратора
[Общее] :
- Удален
adminerкак встроенный инструмент управления базами данных. - Удалены устаревшие классы событий администратора:
Pimcore\Event\Admin\*,Pimcore\Event\AdminEvents,Pimcore\Event\Model\*. - Изменен процесс создания навигации. Стало проще добавлять главное меню и подменю. Подробности смотрите в разделе Добавление пользовательских элементов к основной навигации
[Аутентификация] :
- Удалена поддержка старой системы аутентификации
- Удалена защита от BruteforceProtection, теперь используются настройки Symfony по умолчанию
- Удален PreAuthenticatedAdminToken
- События входа администратора
- Удалено событие
AdminEvents::LOGIN_CREDENTIALS(pimcore.admin.login.credentials). Вместо этого используйтеPimcore\Bundle\AdminBundle\Event\Login\LoginCredentialsEvent. - Удалено событие
AdminEvents::LOGIN_FAILED(pimcore.admin.login.failed). Вместо этого используйтеSymfony\Component\HttpFoundation\Request\LoginFailureEvent.
- Удалено событие
- Удалена фабрика кодировщиков паролей Pimcore, служба
pimcore_admin.security.password_encoder_factoryи конфигурацияpimcore.security.factory_type. - Удален устаревший метод
Pimcore\Bundle\AdminBundle\Security\User::GetUserName(), вместо него используетсяgetIdentifier(). - Устаревший метод
Pimcore\Tool\Authentication::authenticateHttpBasic()был удален. - Устаревший метод
Pimcore\Tool\Authentication::authenticatePlaintext()был удален.
[JS] :
- Упакованы некоторые библиотеки JS с encore
- Удалены устаревшие функции JS (
ts()иpimcore.helpers.addCsrfTokenToUrl()) - Удален уровень BC-брокера плагинов для событий JS
[Безопасность] :
- По умолчанию включена политика защиты содержимого.
- Реализован Symfony HTML sanitizer для редакторов WYSIWYG. Пожалуйста, обязательно очистите сохраненные данные с помощью этого скрипта.
Кроме того, при использовании API для установки данных WYSIWYG, пожалуйста, передавайте закодированные символы для объектов html
<,>,&и т.д. Данные кодируются дезинфицирующим средством перед сохранением в базе данных, и те же закодированные данные будут возвращены API. Для получения подробной информации о конфигурации смотрите также Конфигурация WYSIWYG
Бандлы
[Общее о бандлах] :
- Удалена поддержка загрузки пакетов через
extensions.php. - Удален менеджер расширений (
Инструменты -> пакеты и блоки) из пользовательского интерфейса администратора. - Удалены команды:
pimcore:bundle:включить,pimcore:bundle:отключить. - Удалена поддержка конфигурации
dontCheckEnabledиз области, доступной для редактирования. - Поведение asset install и
Composer::installAssetsпо умолчанию изменено, что означает, что файлы (такие как css, js) будут копироваться вместо символических ссылок. Таким образом, вы должны запускать командуbin/console assets:installдля каждого изменения. Поведение может быть изменено вcomposer.jsonследующим образом:
"extra": {
"symfony-assets-install": "relative"
}
[Извлеченная основная функциональность] :
Функциональность, которая была перенесена в отдельный пакет внутри репозитория pimcore/pimcore и которую необходимо включить во время установки Pimcore или в
config/bundles.php:[Application Logger] Журнал приложений был перенесен в
PimcoreApplicationLoggerBundle. Пожалуйста, обратите внимание на новые пространства имен для классов из этого пакета.[CustomReports] были перенесены в PimcoreCustomReportsBundle
- Конфигурация
pimcore:custom_reportsбыла удалена, пожалуйста, используйте вместо нееpimcore_custom_reports:в PimcoreCustomReportsBundle.
- Конфигурация
[Glossary] был перенесен в PimcoreGlossaryBundle
- Тег
pimcoreglossary()был удален, пожалуйста, используйте twig фильтрpimcore_glossary. - Конфигурация
pimcore:glossaryбыла удалена, пожалуйста, используйте вместо нееpimcore_glossary:в PimcoreGlossaryBundle.
- Тег
[Search] был перенесен в PimcoreSimpleBackendSearchBundle
- Функциональность поиска была выделена в отдельный пакет (
PimcoreSimpleBackendSearchBundle) - Команда
pimcore:search-backend-reindexбыла перенесена в пакет поиска - Значки поиска по всему Pimcore будут недоступны без пакета поиска
- Функция встроенного поиска для некоторых отношений будет недоступна без пакета поиска
advancedпоиск по GDPR также был перенесен. Мы предоставляем базовый поиск, чтобы охватить основные функциональные возможности, если пакет поиска недоступен.- Ассеты, объекты, документы и быстрый поиск были перенесены в пакет поиска
- Все файлы, связанные с внутренним поиском, были перенесены в пакет поиска (пожалуйста, ознакомьтесь с пользовательскими реализациями, если вы полагаетесь на какой-либо внутренний поисковый компонент!)
- Добавлен дополнительный транспорт для обмена сообщениями для внутреннего поиска (
pimcore_search_backend_message) - Перенесена команда
FullTextIndexOptimizeTaskв SimpleBackendSearchBundle. В соответствии с этим пространство имен изменилось сPimcore\Maintenance\Tasks\FullTextIndexOptimizeTaskнаPimcore\Bundle\SimpleBackendSearchBundle\Task\Maintenance\FullTextIndexOptimizeTask.
- Функциональность поиска была выделена в отдельный пакет (
[SEO] Редактор документов, редиректы, карты сайта, robots.txt и HTTP-ошибки были перенесены в PimcoreSeoBundle
[Staticroutes] был перенесен в PimcoreStaticRoutesBundle
- Конфигурация
pimcore:staticroutes:была удалена, пожалуйста, используйте вместо нееpimcore_static_routes:в PimcoreStaticRoutesBundle.
- Конфигурация
[UUID] был перенесен в PimcoreUuidBundle
- Конфигурация
pimcore:general:instance_identifierбыла удалена, пожалуйста, используйте вместо нееpimcore_uuid:instance_identifierв PimcoreUuidBundle. Пожалуйста, запуститеbin/console config:dump pimcore_uuid, чтобы узнать больше о конфигурации идентификатора экземпляра после установки пакета.
- Конфигурация
[WordExport] был перенесен в PimcoreWordExportBundle.
[Перевод в формате Xliff] Импорт/экспорт и связанные с ними события перенесены в PimcoreXliffBundle. Пожалуйста, проверьте и адаптируйте пространства имен событий.
[WYSIWYG-редактор] Редактор по умолчанию был изменен с
CKEditorнаTinyMCEи перенесен в PimcoreTinymceBundle. Пожалуйста, адаптируйте пользовательскую конфигурацию и расширьте средство очистки html для поддержки необходимых html-элементов в редакторе wysiwyg.
Функциональность, которая была перенесена в отдельный пакет и собственный репозиторий и которую необходимо установить через composer, а также активировать в
config/bundles.php:[AdminBundle] Пакет Admin Bundle был перенесен в пакет
pimcore/admin-ui-classic-bundle.- Пожалуйста, запросите в вашем файле composer.json и зарегистрируйте пакет в ядре:
public function registerBundlesToCollection(BundleCollection $collection): void
{
// pimcore bundles
$collection->addBundle(new \Pimcore\Bundle\AdminBundle\PimcoreAdminBundle\PimcoreAdminBundle(), 60);
}- Удалены устаревшие методы
getTranslator(),getBundleManager()иgetTokenResolver()изPimcore\Bundle\AdminBundle\Controller\AdminController
[System Info & Tools] Информация о Php и состояние Opcache были перенесены в пакет
pimcore/system-info-bundle.[File Explorer] Системный проводник файлов был перенесен в пакет
pimcore/system-file-explorer.[Web2Print] был перенесен в пакет
pimcore/web-to-print-bundle.- Конфигурация
pimcore:documents:web_to_printбыла удалена, пожалуйста, используйте вместо нееpimcore_web_to_printв PimcoreWebToPrintBundle. - События, связанные с печатью, были перенесены в PimcoreWebToPrintBundle. Пожалуйста, проверьте и адаптируйте пространства имен событий.
- Устаревший процессор Chrome без заголовков был удален. Пожалуйста, используйте вместо него процессор Chromium.
- Устаревший процессор WkHtmlToPdf был удален.
- Представляем процессор Web2print
Chromium, который используетchrome-php/chrome(такой же, как для предварительного просмотра страниц), в качестве замены процессора HeadlessChrome, для которого требовался NodeJS.
- Конфигурация
[Персонализация и таргетинг] перенесены в пакет
pimcore/personalization.- Конфигурация
pimcore:таргетинг:была удалена, пожалуйста, используйте вместо нееpimcore_personalization.targetingв PimcorePersonalizationBundle. - Таргетинг теперь использует подход, основанный на регистрации, и не будет включен по умолчанию. Добавьте следующую конфигурацию, чтобы включить это:
pimcore_personalization:
targeting:
enabled: true- Конфигурация
[Google Marketing] был перенесен в пакет
pimcore/google-marketing-bundle.- Конфигурация
pimcore:services:googleбыла удалена, пожалуйста, используйте вместо нееpimcore_google_marketingв PimcoreGoogleMarketingBundle. - [Google] Классы Google\Cse и Google\Cse\Item были удалены.
- Конфигурация
[Рассылка новостей] была перенесена в пакет
pimcore/newsletter-bundle.- Конфигурация
pimcore:newsletterбыла удалена, пожалуйста, используйте вместо нееpimcore_newsletterв PimcoreNewsletterBundle. - События, связанные с рассылкой новостей, были перенесены в PimcoreNewsletterBundle. Пожалуйста, проверьте и адаптируйте пространства имен событий.
- Идентификаторы служб изменены с
pimcore.newsletterнаpimcore_newsletter, напримерpimcore_newsletter.document.newsletter.factory.default.
- Конфигурация
Ядро
[Команды] :
- Удалена зависимость
webmozarts/console-parallelization, чтобы сделать распараллеливание необязательным. Если вы все еще хотите использовать распараллеливание для консольных команд, пожалуйста, добавьте эту зависимость в свой собственный файл composer.json. - Удален устаревший метод
Parallelization::configureParallelization(). - Удален устаревший признак
ConsoleCommandPluginTrait.
[Конфигурация] :
Pimcore\Config\Configбыла удалена, см. #12477. Пожалуйста, используйте вместо этого возвращаемый массив, например$web2printConfig = Config::getWeb2PrintConfig();
$web2printConfig = $web2printConfig['chromiumSettings'];Удален устаревший обратный вызов из LocationAwareConfigRepository. Таким образом, конфигурации в старом формате файла php больше не поддерживаются.
Удалена настройка целей записи и каталога хранения в файле окружения. Вместо этого используйте symfony config.
Переименованы каталоги по умолчанию из
image-thumbnailsиvideo-thumbnailsвimage_thumbnailsиvideo_thumbnails.Удалены устаревшие сервисы/псевдонимы:
Pimcore\Templating\Renderer\TagRenderer,pimcore.cache.adapter.pdo,pimcore.cache.adapter.pdo_tag_aware.Переименуйте конфигурационные файлы из
*.ymlв*.yaml. Обратите внимание, что теперь в качестве конфигурационного файла мы используемsystem_settings.yaml, а неsystem.ymlВ системных настройках теперь реализован репозиторий Locationawareconfig. Смотрите [руководство по подготовке](../../../Pimcore/Installation_and_Upgrade/Updating_Pimcore/Подготовка к_v11).
Конфигурационный узел
pimcore.adminи связанные с ним параметры перемещены в AdminBundle непосредственно под узломpimcore_admin. Пожалуйста, измените использование ваших параметров соответствующим образом, например. вместоpimcore.admin.unauthenticated_routesдолжно бытьpimcore.admin.unauthenticated_routesБыл удален устаревший узел конфигурации
pimcore.error_handlingи связанный с ним параметрpimcore.response_exception_listener.render_error_document.Перенесены настройки
hide_edit_imageиdisable_tree_previewиз разделаpimcoreв разделpimcore_admin.Рекомендуемый формат и формат по умолчанию для хранения допустимых языков в
system_settings.yamlтеперь является массивом, например:- en
- de
pimcore:
general:
valid_languages:
- en
- de
[CoreBundle] :
- Пожалуйста, измените путь к ресурсу конфигурации CoreBundle с "@PimcoreCoreBundle/Resources/config/..." на "@PimcoreCoreBundle/config/.." в конфигурациях вашего проекта.
- Приоритет
PimcoreCoreBundleбыл изменен на-10, чтобы убедиться, что он загружается после пакетов по умолчанию.
[Окружение] :
- Удалена зависимость
symfony/dotenv, чтобы сделать загрузку файлов.envнеобязательной. пожалуйста, добавьте это требование в свой файл composer.json, если вы все еще хотите использовать файлы.env. - Удалена поддержка переменных среды
PIMCORE_SKIP_DOTENV_FILE. Вы по-прежнему можете использовать файлы, относящиеся к конкретной среде, такие как.env.testили.env.prodдля переменных среды, относящихся к конкретной среде.
[Gotenberg] :
- Добавлена поддержка Gotenberg в качестве инструмента для создания, преобразования, слияния и т.д. PDF-файлов
- В [Asset] добавлен адаптер (в качестве альтернативы LibreOffice) для предварительного просмотра ресурсов поддерживаемых типов документов и установки его в качестве адаптера по умолчанию.
- [Web2Print] Добавлены параметры настройки, конфигурация и процессор для предварительного просмотра и генерации PDF-файлов
[Обслуживание] :
- Удалены опции
--asyncи--forceиз командыpimcore:maintenance. Пожалуйста, убедитесь, что в настройкахmessenger:consume pimcore_maintenanceнезависимо
[Миграции] :
- Удален
executeMigrationsUpизPimcore\Composer. - Pimcore больше не запускает миграции ядра автоматически после обновления
composer. Убедитесь, что миграции выполнены, выполнив командуbin/console doctrine:migrations:migrate --prefix=Pimcore\\Bundle\\CoreBundle.
[Наименования] :
- Переименованы master, blacklist и whitelist в main, blocklist, allowlist
[Разрешения] :
- Разрешения для классов DataObjects были структурированы более детально, чтобы обеспечить больший контроль. Коллекции полей, блоки объектов, хранилища классификаций и единицы измерения количественных значений теперь имеют свои собственные разрешения.
[Сессии] :
- Удалены AdminSessionHandler и AdminSessionListener. Сессия теперь обрабатывается Symfony.
- Удалены
SessionConfiguratorInterfaceиSessionConfigurator, поэтому сервисы с тегомpimcore.session.configuratorбольше не будут регистрировать пакеты сессий. - Удален параметр
pimcore.admin.session.attribute_bags. - TargetingSessionBagListener - изменена подпись
__construct. - Для
AdminSessionHandlerтребуется сессия из стека запросов. EcommerceFrameworkBundle\SessionEnvironmentбольше не загружается из сессии и не сохраняется в нем в режиме cli.- Для
EcommerceFrameworkBundle\Tracking\TrackingManagerтребуется сессия из стека запросов.
Ecommerce
[Общее о Ecommerce] :
- Пакет для электронной коммерции был перенесен в пакет
pimcore/ecommerce-bundle. Если вы хотите продолжать использовать платформу электронной коммерции, пожалуйста, запросите пакет в вашем composer.json и установите его после включения вconfig/bundles.php. - Конструктор следующих сервисов был изменен, пожалуйста, соответствующим образом адаптируйте вашу пользовательскую реализацию:
IndexService\ProductList\DefaultMysql,IndexService\ProductList\DefaultFindologic.IndexService\Worker\AbstractElasticSearch,IndexService\Worker\DefaultFindologic,IndexService\Worker\DefaultMysql,IndexService\Worker\OptimizedMysqlIndexService\Config\AbstractConfigи его подклассы.Tracking\Tracker\Analytics\AbstractAnalyticsTrackerи его подклассы.
- События, связанные с электронной коммерцией, были перенесены. Пожалуйста, проверьте и адаптируйте пространства имен событий.
- Изменена сигнатура метода [ClassDefinition\LinkGeneratorInterface], вместо
Pimcore\Model\DataObject\Concreteиспользуетсяobject. - Поддержка Elasticsearch 7 была удалена
- Параметр конфигурации
es_client_paramsвindex_serviceбыл удален - Удалить устаревшие методы
check()иexists()из классаPimcore\Bundle\EcommerceFrameworkBundle\VoucherService\Reservation
[Сервис индекса] :
- Пожалуйста, не забудьте перестроить индекс вашего продукта, чтобы убедиться, что изменения применяются соответствующим образом (это актуально для индексов mysql и elasticsearch). В качестве альтернативы вы можете вручную переименовать и удалить
o_из всех столбцов/полей индекса.
[Интерфейсы продукта] :
- Изменен тип возвращаемого значения в интерфейсе
CheckoutableInterfaceдля методовgetOSPrice,getOSPriceInfo,getOSAvailabilityInfo,getPriceSystemName,getAvailabilitySystemName,getPriceSystemImplementation,getAvailabilitySystemImplementation, больше не может быть null.
Элементы
[Все] :
- Добавлены методы
setParentId,setTypeиSetParentвPimcore\Model\Element\ElementInterface - Удален возврат к родительскому идентификатору 1, когда создается элемент с несуществующим родительским идентификатором.
- Передача параметра $force как логического значения больше недопустима в методах
GetById,getByPath,getElementById. Вместо этого, пожалуйста, передайте его как ассоциативный массив (например,['force' => true]). - Изменена сигнатура метода в
Pimcore\Model\Element\ElementInterface::save(), это изменяет метод::save()для всех классов (например, объектов данных и страниц), реализующих интерфейс, включая те, которые наследуются отConcrete/AbstractObject, см. #13207 - Удален устаревший метод
getTotalCount() - Удален устаревший метод
Pimcore\Model\Element\Service::GetType(), вместо него используетсяPimcore\Model\Element\Service::getElementType(). Element\Service::getValidKey()удаляет все управляющие/неназначенные, недопустимые и некоторые другие специальные символы (например, табуляции, разрывы строк, ввод формы и вертикальные пробелы).- Удален устаревший метод
Pimcore\Model\Element\Service::getSaveCopyName(), пожалуйста, используйте вместо него методPimcore\Model\Element\Service::getSafeCopyName().
[Объекты данных][Ассеты][Документы] :
- Значения даты и времени для запланированных задач, журнала приложений и уведомлений теперь отображаются в местном часовом поясе.
[Объекты данных][Документы] :
- Вызов
getChildren/getSiblingsдляAbstractObject,DocumentиAssetтеперь возвращает выгруженный список. Если просмотр списка не выполняется немедленно, то требуется явно вызватьload(). - Удалены устаревшие методы
GetObject()иsetObject()в классахPimcore\Model\Document\LinkиPimcore\Model\DataObject\Data\Link, пожалуйста, используйте вместо нихgetElement()иSetElement().
Ассеты
- Переработан метод
Pimcore\Model\Asset::getMetadata, позволяющий отображать все записи метаданных, отфильтрованные по определенному языку. В предыдущей версии языковой фильтр был доступен только тогда, когда в параметрах было указано конкретное имя метаданных. Добавлены подсказки по встроенному типу и соответствующие тесты. - Удалены устаревшие методы
marshal()/unmarshal()для метаданных, вместо них используются методыnormalize()/denormalize(). - Удалены устаревшие параметры
Import from ServerиImport from URL. - Сообщения об обновлении активов/миниатюр активов теперь направляются в другую очередь.
- Удален предварительный просмотр виртуальной реальности. Подробности смотрите в #14111
- Миниатюры изображений: Удалена поддержка использования пользовательских обратных вызовов для преобразования миниатюр.
- Удалена загрузка ресурсов только через фиксированное пространство имен. Можно настроить пользовательские типы ресурсов.
- Миниатюры: улучшена сигнатура метода для
$thumbnail->getPath(). Теперь вы можете передавать параметры в виде массива$thumbnail->getPath([deferredAllowed=> true,frontend=> false]); - Удалено устаревшее свойство
Pimcore\Model\Asset::$types, вместо него используетсяGetTypes().
[Оптимизация изображений] :
- Удалены все сервисы оптимизации изображений (например, PngCrushOptimizer, Jpegoptimizer и т.д.), поскольку оптимизация изображений выполняется с помощью нового пакета spatie/image-optimizer.
[WebDAV] :
URL-адрес WebDAV был изменен с
https://YOUR-DOMAIN/admin/asset/webdavнаhttps://YOUR-DOMAIN/asset/webdavВ результате этого изменения в вашей конфигурации nginx требуются следующие изменения:
# Assets
....
location ~* ^(?!/admin)(.+?)....Новая:
# Assets
....
location ~* ^(?!/admin|/asset/webdav)(.+?)....
Объекты данных
Удалено "generate type declarations" в определениях классов
Удален method_exists на уровне bc, пожалуйста, используйте вместо него соответствующие интерфейсы. Подробности смотрите в #9571
isEqual()для расширенных типов реляционных полей больше не проверяет равенство типов метаполей, см. #12595Добавлены возвращаемые типы в методы настройки. Подробнее см. #12185
Псевдоним
ReverseManyToManyObjectRelationудален, пожалуйста, используйте вместо негоReverseObjectRelation.Изменено поведение по умолчанию: методы getByXXX в классе
Concreteтеперь возвращают объекты и варианты, если больше ничего не указано.Изменено значение по умолчанию
$objectTypes, чтобы включать варианты в определенных сценариях.Удален устаревший URL предварительного просмотра в редакторе классов.
Удалена функциональность sql filter для сетки объектов данных
Загрузка неконкретных объектов с классом Concrete больше невозможна
Удалены функции настройки для вычисляемых значений, поскольку они все равно не использовались.
Удален префикс
o_для свойств объекта данных и столбцов базы данных.Из-за удаления префикса
o_имена свойствclassTitle,hasChildren,siblings,hasSiblings,childrenSortBy,childrenSortOrder,versionCount,dirtyLanguagesиdirtyFieldsизменены.Текстовые типы данных теперь присваивают соответствующим столбцам базы данных значение
nullвместо `` (пустая строка), когда они пусты.Метод
Concrete::getClass()выдает исключение NotFoundException, если класс для объекта не найден.Подсказки по изменению типа в
Pimcore\Model\DataObject\QuantityValue\QuantityValueConverterInterface::convert():public function convert(QuantityValue $quantityValue, Unit $toUnit): QuantityValue;public function convert(AbstractQuantityValue $quantityValue, Unit $toUnit): AbstractQuantityValue;Добавлен глобальный переключатель языков для локализованных полей
Добавлена новая вспомогательная функция наследования данных
DataObject\Service::useInheritedValuesТеперь можно добавлять видео-ресурсы непосредственно в видео, доступное для редактирования в классе
Удалено управление кнопками для определения макета объектов данных.
[Определения классов] :
- Распознаватель классов больше не перехватывает исключения.
[ClassSavedInterface] :
- Удален слой bc
method_exists. Пожалуйста, добавьте соответствующий интерфейсClassSavedInterfaceв свои пользовательские определения полей. Для получения более подробной информации ознакомьтесь с примечаниями к обновлению 10.6.0.
[Экспорт в CSV] :
- Изменена кодировка табличных типов данных с
base64_encodedнаjson_encode.
[CustomLayouts] :
- Удалена команда
pimcore:deployment:custom-layouts-rebuild, поскольку пользовательские макеты переносятся в LocationAwareConfigRepository.
[Отношения] :
- Добавлена возможность встроенной загрузки ресурсов из отношений
- Добавлено диалоговое окно подтверждения к пустой кнопке отношения и добавлена возможность отключить очистку отношений в макете класса.
[UrlSlug] :
- Удален столбец
indexи индексindexиз таблицыobject_url_slugs, поскольку он нигде не использовался. - Разрешение на обработку неопубликованного резервного документа теперь используется по умолчанию, удалены соответствующие параметры конфигурации и способы использования (
allow_processing_unpublished_fallback_document,ElementListener::FORCE_ALLOW_PROCESSING_UNPUBLISHED_ELEMENTS). Для получения более подробной информации, пожалуйста, смотрите #10005
Документы
- Удалена функция ввода html-тегов
metadataв разделе настроек документа. - Удалено свойство
$typesизPimcore\Model\Document. Вместо этого используйте методGetTypes. - Удален
pimcore:document:typesиз конфигурации. Типы будут представлены ключами вtype_definitions:map - Удален устаревший метод
Pimcore\Routing\Dynamic\DocumentRouteHandler::addDirectRouteDocumentType(), пожалуйста, используйте вместо него конфигурациюpimcore.documents.type_definitions.map.%document_type%.direct_route. - Добавлена команда
pimcore:documents:cleanupдля удаления документов с указанными типами и удаления связанных таблиц типов документов, что полезно в таких случаях, как удаление документов без заголовка или страниц/контейнеров web2print после удаления, см. Документы - Удалено поле
attributesиз редактируемой ссылки. - Устаревший WkHtmlToImage был удален.
- Добавлен второй логический параметр
$validateв метод setContentMainDocumentId(). Это ограничит возможность привязки страниц в качестве основных документов контента друг к другу. Для получения более подробной информации, пожалуйста, смотрите #12891 - Переработан
pimcore.documents.valid_tables, чтобы он был опцией в каждом определении типа документа (например,pimcore.documents.type_definitions.map.%document_type%.valid_table) вместо собственного узла массива. - При перемещении документа в дереве больше не отображается запрос на создание перенаправлений. Создание перенаправления теперь настраивается с помощью
pimcore:redirects:auto_create_redirects. Эта конфигурация включает в себя URLSlugs и Pretty URLs.
pimcore_seo:
redirects:
auto_create_redirects: true
- Изменена конфигурация типов документов. Теперь можно изменять навигацию и многое другое для каждого типа документа в конфигурации.
documents:
type_definitions:
map:
page:
class: \Pimcore\Model\Document\Page
translatable: true
valid_table: 'page'
direct_route: true
translatable_inheritance: true
children_supported: true
only_printable_childrens: false
predefined_document_types: true
[Areabricks] :
- Расположение шаблона по умолчанию для
AbstractTemplateAreabrickтеперь являетсяTEMPLATE_LOCATION_GLOBAL.
[Контроллеры] :
- Удален устаревший
SensioFrameworkExtraBundle, который влияет на следующее:- Аннотация
@Templateдолжна быть заменена атрибутом#[Template]. Угадывание шаблона на основе controller::action больше не поддерживается. - Аннотация
@ResponseHeaderдолжна быть заменена атрибутом#[ResponseHeader]. Удален устаревшийPimcore\Controller\Configuration\ResponseHeader. - Аннотация
@ParamConverterдолжна быть заменена атрибутом#[DataObjectParam].
- Аннотация
FrontendController::renderTemplate(): Изменена видимость наprotected.
[Chromium] :
- Добавлена поддержка запуска chromium в контейнере Docker и работы через websocket для web2print и предварительного просмотра страниц, а также для запуска его с помощью локального двоичного файла.
[DocType] :
- staticGeneratorEnabled теперь имеет логическое значение вместо целого
[Редактируемые элементы документа] :
- Удален method_exists bc layer для
getDataEditmode(),rewriteIds()иload(), пожалуйста, используйте соответствующие интерфейсыEditmodeDataInterface,IdRewriterInterfaceиLazyLoadingInterfaceвместо этого.
[Навигация] :
- Вызов метода
Pimcore\Navigation\Builder::getNavigation()с использованием дополнительных аргументов выполняется следующим образом - Методы
Pimcore\Navigation::setDefaultPageType,Pimcore\Navigation::getDefaultPageType,Pimcore\Navigation\Container::_sort() иPimcore\Navigation\Page::_normalizePropertyName()` были помечены как внутренние.
[Сайты] :
- Вызов абсолютного пути с сайта больше невозможен. Если будет вызван абсолютный путь, вместо него будет возвращена ошибка 404.
- Идентификатор сайта по умолчанию был изменен с
defaultна0. Пожалуйста, соответствующим образом обновите настройки, используя идентификатор сайта по умолчанию.
[Редактируемые элементы видео] :
- Удалены устаревшие атрибуты
<iframe>:frameborder,webkitAllowFullScreen,mozallowfullscreenиallowfullscreenдля встраиваний в YouTube, Vimeo и DailyMotion.
Инфраструктура
[Параметры PHP] :
- Удалены настройки следующих параметров:
memory_limit,max_execution_time,max_input_timeиdisplay_errors.
[PHP] :
- Минимальная поддерживаемая версия PHP теперь 8.1, добавлена поддержка версии 8.2
[Symfony] :
- Замените устаревший
Symfony\Component\HttpFoundation\RequestMatcherнаSymfony\Component\HttpFoundation\ChainRequestMatcher
Инструменты
[Логгер приложения] :
- Удалена устаревшая константа
PIMCORE_LOG_FILEOBJECT_DIRECTORY, поскольку для сохранения/получения файловых объектов используется flysystem. Пожалуйста, не забудьте адаптировать свой код и перенести файловые объекты вручную. - В названиях архивных таблиц теперь указывается год-месяц, а не месяц-год, см. #8237.
[Кэш] :
- Удалена зависимость
psr/simple-cacheиз-за отсутствия использования в ядре. - Ответы, содержащие заголовок
Cache-Control: no-store, больше не будут кэшироваться полностраничным кэшем. - Удален помощник по кэшированию
Pimcore\Cache\RuntimeиPimcore\Cache\RuntimeCacheTrait. Кэш времени выполнения теперь обрабатываетсяPimcore\Cache\RuntimeCache.
[Консоль] :
- Видимость методов
execInBackgroundUnixиexecInBackgroundWindowsизменена сprotectedнаprivate, а дляgetSystemEnvironment- сpublicнаprivate.
[Email] :
- Удалены устаревшие методы setBodyHtml(), setBodyText(), createAttachment() и setSubject(). Используется html(),
- Изменен параметр
league/html-to-markdownна ^5.1.
[Переводы] :
- Домены переводов должны быть зарегистрированы, чтобы считаться действительными. Если вы используете пользовательские домены
- site_1
- site_2
pimcore:
translations:
domains:
- site_1
- site_2
- Добавлено средство очистки html от Symfony для метода
\Pimcore\Model\Translation\Dao::save.
[Рабочие процессы] :
- Удалены классы Pimcore\Model\Workflow, Pimcore\Model\Workflow\Dao, Pimcore\Model\Workflow\Listing\Dao и Pimcore\Model\Workflow\Listing.
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.