Closed saundefined closed 5 years ago
Символьными кодами инфоблоков, с идентификаторами не работаем в коде напрямую. Но не все компоненты работают с символьным кодом. Тогда используем заготовку которая кеширует для кода инфоблока его идентификатор, так как кеш является атрибутом конкретной площадки идентификаторы всегда актуальные.
В модуле появился функционал позволяющий обновлять инфоблок по коду и по имени.
Пример обновления по коду:
$builder = new \WS\ReduceMigrations\Builder\IblockBuilder();
$builder->updateIblockByPointer(
\WS\ReduceMigrations\Builder\IblockPointer::byCode(DOMAIN_IBLOCK_NEWS),
function (\WS\ReduceMigrations\Builder\Entity\Iblock $iblock) {
$prop = $iblock->addProperty('Тип')
->code('type')
->typeDropdown();
$prop->addEnum('Главная новость')->xmlId('main');
$prop->addEnum('Срочная новость')->xmlId('hot');
$prop->addEnum('Эксклюзив')->xmlId('exclusive');
}
);
Отличный модуль, но есть вопрос по использованию:
На dev-площадке с помощью IblockBuilder создается инфоблок, при переносе и запуске миграций на продакшене, ID инфоблоков могут отличаться
Для использования в коде мне нужен ID созданного инфоблока. На dev он один, на проде - другой :(
как вы решаете проблему такого рассинхрона?