For coders TYPO3 Tech Corner

TYPO3 Migration: From gridelementsteam/gridelements to b13/container

TYPO3 Migration: From gridelementsteam/gridelements to b13/container

With version 9 of in2code/migration you now have the possibility to automatically migrate from gridelementsteam/gridelements to b13/container. And as always, when using in2code/migration, you should know which data should be transferred from which table field to which. We have already done this for you and drawn it on our whiteboard. In principle, everything revolves around the table tt_content and the content in it:

So you need to know what the layouts (before tt_content.tx_gridelements_backend_layout and after tt_content.CType) are called. In addition, you should also know how to migrate the columns (before tt_content.tx_gridelements_columns and after tt_content.colPos). You pack this into your ContentMigration with the help of two new PropertyHelper classes. The whole thing can then look like this in ContentMigrator.php, for example:

<?php declare(strict_types=1); namespace In2code\MigrationExtend\Migration\Migrator; use In2code\Migration\Migration\Migrator\AbstractMigrator; use In2code\Migration\Migration\Migrator\MigratorInterface; use In2code\Migration\Migration\PropertyHelpers\GridelementsToContainerChildrenPropertyHelper; use In2code\Migration\Migration\PropertyHelpers\GridelementsToContainerParentPropertyHelper; /** * Class ContentMigrator */ class ContentMigrator extends AbstractMigrator implements MigratorInterface { /** * @var string */ protected $tableName = 'tt_content'; /** * @var array */ protected $propertyHelpers = [ '_dummy' => [ [ 'className' => GridelementsToContainerParentPropertyHelper::class, 'configuration' => [ 'types' => [ // tt_content.tx_gridelements_backend_layout => tt_content.CType 1 => 'container-50-50', 3 => 'container-33-33-33', 4 => 'container-70-30', 5 => 'container-30-70', 10 => 'container-accordion', 11 => 'container-tab', 12 => 'container-container', ], ], ], [ 'className' => GridelementsToContainerChildrenPropertyHelper::class, 'configuration' => [ 'columns' => [ // old value in tt_content.tx_gridelements_backend_layout 1 => [ // tt_content.tx_gridelements_columns => tt_content.colPos 12 => 12, 22 => 22, ], 3 => [ 1 => 12, 2 => 22, 3 => 32, ], 4 => [ 1 => 12, 2 => 22, ], 5 => [ 1 => 12, 2 => 22, ], 10 => [ 0 => 12, ], 11 => [ 0 => 12, ], 12 => [ 0 => 12, ], ], ], ], ], ]; }

The Migration.php configuration file would then look like this:

<?php return [ // Default values if not given from CLI 'configuration' => [ 'key' => '', 'dryrun' => true, 'limitToRecord' => null, 'limitToPage' => 0, 'recursive' => true ], // Define your migrations 'migrations' => [ [ 'className' => \In2code\MigrationExtend\Migration\Migrator\ContentMigrator::class, 'keys' => [ 'content', ] ], ] ];

And then you can start the migration as usual via the CLI:

./vendor/bin/typo3cms migration:migrate --configuration EXT:migration_extend/Configuration/Migration.php --key content --dryrun 0

Happy migrating

P.S.: If error messages like "Unused elements detected on this page" appears, you can use the CLI comand container:fixContainerParentForConnectedModeCommand

Back

"Code faster, look at the time" - does this sound familiar to you?

How about time and respect for code quality? Working in a team? Automated tests?

Join us