Представьте себе многосайтовую установку TYPO3. Один из этих сайтов использует расширение (загружает TypoScript расширения), которое изменяет конфигурацию config.tx_extbase.persistence.classes
для GeorgRinger\News\Domain\Model\News
. Другие сайты также используют Новости, но без этого расширения, которое вносит изменения.
Проблема, с которой вы столкнетесь, заключается в том, что карты данных кэшируются глобально, поэтому после очистки кеша зависит, какой сайт будет вызываться первым, и его конфигурация сохраняемости extbase будет кэширована, что может нарушить функциональность других сайтов.
Чтобы обойти эту проблему, я начал перемещать TypoScript, связанный с DataMapper, в отдельный файл TypoScript ExtbasePersistence.typoscript
и загружать его глобально в ext_localconf.php:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript('myext', 'setup', '<INCLUDE_TYPOSCRIPT: source="FILE:EXT:myext/Configuration/TypoScript/ExtbasePersistence.typoscript">');
Мой вопрос: почему это не лучшая практика и не применяется в каждом расширении? Или что я делаю не так, что, кажется, единственный, кто столкнулся с этой проблемой?
Изменить: С моей точки зрения это будет означать, что также основные расширения (такие как extbase
) ДОЛЖНЫ загружать свой TypoScript, связанный с DataMapper, глобально.