Edit on GitHub

Upgrading Pimcore from Version 5.8.x to Version 6.0

Important things to check and consider prior the update

  • PHP >=7.2 is required
  • IE11 is not officially supported anymore. That doesn't mean that IE11 won't work anymore straight away (although a warning will be shown on login), but that's not guaranteed anymore for the entire lifecycle of v6.
  • Symfony 4 is now the default version used by Pimcore, if you'd like to stay on the current LTS version of Symfony (3.4), please add the following to your project-specific composer.json: "symfony/symfony": "^3.4.17"

Adapt your composer.json BEFORE the update!

Due to the removal of sensio/distribution-bundle it's necessary to update your projects composer.json.

To do so, just replace the following lines in your existing composer.json file:

    "post-install-cmd": [
      "Pimcore\\Composer::postInstall",
      "@symfony-scripts"
    ],
    "post-update-cmd": [
      "Pimcore\\Composer::postUpdate",
      "@symfony-scripts",
      "Pimcore\\Composer::executeMigrationsUp"
    ],
    "pre-package-update": [
      "Pimcore\\Composer::prePackageUpdate"
    ],
    "symfony-scripts": [
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
    ]     

with the following configuration:

    "post-install-cmd": [
      "Pimcore\\Composer::postInstall",
      "@pimcore-scripts"
    ],
    "post-update-cmd": [
      "Pimcore\\Composer::postUpdate",
      "@pimcore-scripts",
      "Pimcore\\Composer::executeMigrationsUp"
    ],
    "pimcore-scripts": [
      "Pimcore\\Composer::clearCache",
      "Pimcore\\Composer::installAssets"
    ]

General Changes

  • Removed support for Zend_Paginator_Adapter_Interface and Zend_Paginator_AdapterAggregate on listing classes use the Zend Framework 2/3 classes instead
  • sensio/generator-bundle has been removed in favour of Symfony 4. You can still use pimcore:generate:bundle command to generate Pimcore Bundle Skeleton.
  • twig/twig dependency was changed from ^2.0 to ^2.4
  • sensio/distribution-bundle has been removed.
  • Image Thumbnails: removed the option svgPlaceholder, use lowQualityPlaceholder instead.
  • Maintenance Job: Removed event pimcore.system.maintenance and the old way using Job to add custom tasks
  • Pimcore 4 Compatibility Bridge / Legacy Mode is not supported anymore

Data Object Changes

  • Checkbox data-type is tri-state from now on (null, true, false). A default value can be set for the editmode (not on database-level). Null means that inheritance is enabled, otherwise it isn't. Until now, inheritance was enabled also for false value.
  • Removed the Persona and Persona Multiselect data object data-types, please use TargetGroup and TargetGroupMultiselect instead
  • Pimcore\Model\DataObject\Concrete::getValueFromParent() and Pimcore\Model\DataObject\Objectbrick\Data\AbstractData::getValueFromParent throws an InheritanceParentNotFoundException if it can't get a value from a parent
  • Getter hook preGetValue() requires now the use of Pimcore\Model\DataObject\PreGetValueHookInterface, all your classes using preGetValue() need to implement this interface.

Removed Classes, Interfaces, Methods, Constants, Functions

Pimcore\Http\Context\PimcoreContextResolverAwareInterface
Pimcore\Bundle\CoreBundle\EventListener\Frontend\AbstractFrontendListener
Pimcore\Bundle\CoreBundle\EventListener\AbstractContextAwareListener
Pimcore\Model\DataObject\ClassDefinition\Data\Persona
Pimcore\Model\DataObject\ClassDefinition\Data\Personamultiselect
Pimcore\Model\Tool\Targeting\Persona
Pimcore\Model\Tool\Targeting\Persona\Listing
Pimcore\Cache::addClearedTag()
Pimcore\Model\Document\Page\Dao::hasPersonaSpecificElements()
Pimcore\Model\Document\Page::getKeywords()
Pimcore\Model\Document\Page::setKeywords()
Pimcore\Model\Document\Page::setPersonas()
Pimcore\Model\Document\Page::getPersonas()
Pimcore\Model\Document\Page::getPersonaElementPrefix()
Pimcore\Model\Document\Page::getPersonaElementName()
Pimcore\Model\Document\Page::setUsePersona()
Pimcore\Model\Document\Page::getUsePersona()
Pimcore\Model\Document\Page::PERSONA_ELEMENT_PREFIX_PREFIXPART
Pimcore\Model\Document\Page::PERSONA_ELEMENT_PREFIX_SUFFIXPART
Pimcore\Config::DEFAULT_ENVIRONMENT
Pimcore\Document\Newsletter\AddressSourceAdapter\DefaultAdapter::addPersonaConditions()
is_includeable()
Pimcore\Version::getBuildDate()
Pimcore\Tool::isFrontentRequestByAdmin()
Pimcore\Model\Version::cleanHistory()
Pimcore\Model\Version\Dao::getOutdatedVersionsSteps()
Pimcore\Model\Version\Dao::getOutdatedVersionsDays()
Pimcore\Model\Version\Dao::disableSlowQueryLog()
Pimcore\Model\Version\Dao::enableSlowQueryLog()
Pimcore\Model\DataObject::preGetValue()
Pimcore\Model\DataObject\ClassDefinition::addNewDataField()
Pimcore\Model\DataObject\ClassDefinition::removeExistingDataField()
Pimcore\Model\Translation\AbstractTranslation::getDate()
Pimcore\Event\SystemEvents::MAINTENANCE
Pimcore\Event\System\MaintenanceEvent
Pimcore\Model\Schedule\Manager\Procedural
Pimcore\Model\Schedule\Maintenance\Job
Pimcore\Maintenance\CallableTask
Pimcore\Model\Document\Tag\Block::enumerate()
Pimcore\Model\Document\Hardlink::setChildsFromSource()
Pimcore\Model\Document\Hardlink::getChildsFromSource()
Pimcore\Model\Document\Page::getName()
Pimcore\Model\Document\Page::setName()
Pimcore\Model\Document\Link::getName()
Pimcore\Model\Document\Link::setName()
Pimcore\Model\Document\Link::getParameters()
Pimcore\Model\Document\Link::setParameters()
Pimcore\Model\Document\Link::getAnchor()
Pimcore\Model\Document\Link::setAnchor()
Pimcore\Model\Document\Link::getTitle()
Pimcore\Model\Document\Link::setTitle()
Pimcore\Model\Document\Link::getAccesskey()
Pimcore\Model\Document\Link::setAccesskey()
Pimcore\Model\Document\Link::getRel()
Pimcore\Model\Document\Link::setRel()
Pimcore\Model\Document\Link::getTabindex()
Pimcore\Model\Document\Link::setTabindex()
Pimcore\Model\Document\Link::getTarget()
Pimcore\Model\Document\Link::setTarget()
Pimcore\Model\Tool\Targeting\Rule::fireEvent()
Pimcore::addToGloballyProtectedItems()
Pimcore::removeFromGloballyProtectedItems()
Pimcore\Placeholder::setWebsiteClassPrefix()
Pimcore\Placeholder::getWebsiteClassPrefix()
Pimcore\Placeholder::setPlaceholderPrefix()
Pimcore\Tool::clearSymfonyCache()
Pimcore\Tool::getSymfonyCacheDirRemoveTempLocation()
Pimcore\Update
Pimcore\Db\ConnectionInterface::supportsParameters()
Pimcore\Db\PimcoreExtensionsTrait::supportsParameters()
Pimcore\Cache\Pool\Redis\Connection
Pimcore\Model\Document\Tag\Area\AbstractArea::_getParam()
Pimcore\Model\Document\Tag\Area\AbstractArea::_getAllParams()
Pimcore\Model\Tool\Email\Log::getToAsArray()
Pimcore\Model\Tool\Email\Log::getCcAsArray()
Pimcore\Model\Tool\Email\Log::getBccAsArray()
Pimcore\Model\Tool\Email\Log::getReplyToAsArray()
\Pimcore\Model\Document\Email::getToAsArray()
\Pimcore\Model\Document\Email::getAsArray()
\Pimcore\Model\Document\Email::getFromAsArray()
\Pimcore\Model\Document\Email::getReplyToAsArray()
\Pimcore\Model\Document\Email::getCcAsArray()
\Pimcore\Model\Document\Email::getBccAsArray()
\Pimcore\Model\Document\Newsletter::getFromAsArray()

# LEGACY MODE
Pimcore::isLegacyModeAvailable()
Pimcore\Model\Document\PageSnippet::doRenderWithLegacyStack()
Pimcore\Model\Document\PageSnippet::isLegacy()
Pimcore\Model\Document\PageSnippet::getLegacy()
Pimcore\Model\Document\PageSnippet::setLegacy()
Pimcore\Model\Document::doRenderWithLegacyStack()
Pimcore\ExtensionManager
Pimcore\Helper\LegacyClass
Pimcore\Model\Staticroute::getLegacy()
Pimcore\Model\Staticroute::setLegacy()
Pimcore\Model\Document\Tag\Areablock::isCustomAreaPath()
Pimcore\Model\Document\Tag\Areablock::isBrickEnabled()
Pimcore\Model\Document\Tag\Areablock::getAreaDirectory()
Pimcore\Model\Document\Tag\Areablock::getPathForBrick()
Pimcore\Model\Document\Tag\Areablock::getBrickConfig()
Pimcore\Model\Document\Tag\Areablock::getAreaDirs()
Pimcore\Model\Document\Tag\Areablock::getBrickConfigs()
Pimcore\Model\Document\Tag\Area\Info::setConfig()
Pimcore\Model\Document\Tag\Area\Info::getConfig()
Pimcore\Model\Document\Tag\Area\Info::setPath()
Pimcore\Model\Document\Tag\Area\Info::getPath()
Pimcore\Model\Document\Tag\Area\Info::setName()
Pimcore\Model\Document\Tag\Area\Info::getName()
Pimcore\Model\Document\Tag\Area::getAreaDirs()
Pimcore\Model\Document\Tag\Area::getBrickConfigs()

Method Singnature Changes

Pimcore\Templating\Renderer\IncludeRenderer::render() - removed last optional argument $legacyView