Typo3 Extbase持久性脚本是否应始终全局加载?
设想一个多站点的TYPO3安装。其中一个站点使用扩展(加载扩展的键入脚本),该扩展修改Typo3 Extbase持久性脚本是否应始终全局加载?,typo3,extbase,typo3-extensions,Typo3,Extbase,Typo3 Extensions,设想一个多站点的TYPO3安装。其中一个站点使用扩展(加载扩展的键入脚本),该扩展修改config.tx\u extbase.persistence.classesconfig forGeorgRinger\News\Domain\Model\News。其他网站也使用新闻,但不包括进行修改的扩展 您将遇到的问题是,数据映射是全局缓存的——因此在清除缓存后,它取决于将首先调用哪个站点,并缓存其extbase持久性配置,这可能会破坏其他站点的功能 为了解决这个问题,我开始将与DataMapper相关
config.tx\u extbase.persistence.classes
config forGeorgRinger\News\Domain\Model\News
。其他网站也使用新闻,但不包括进行修改的扩展
您将遇到的问题是,数据映射是全局缓存的——因此在清除缓存后,它取决于将首先调用哪个站点,并缓存其extbase持久性配置,这可能会破坏其他站点的功能
为了解决这个问题,我开始将与DataMapper相关的打字脚本移动到一个单独的打字脚本文件ExtbasePersistence.TypoScript
,并将其全局加载到ext_localconf.php中:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript('myext','setup','')代码>
我的问题是:为什么这不是最好的做法,并在每一个扩展中都这样做?或者我做错了什么,我似乎是唯一一个遇到这个问题的人
编辑:在我看来,这意味着核心扩展(如extbase
)也必须全局加载与DataMapper相关的打字脚本。extbase确实通过
这个文件是由TYPO3在全局范围内自动加载的,据我所知,这也是最佳实践
每个扩展都可以添加此文件,请参见对于我来说,DataMap缓存似乎有缺陷。如果你问我的话,在打字脚本中处理类映射本身就是一件坏事,因为它不应该依赖于要加载的类的站点上下文。这些事情应该通过全局配置来处理,而这些配置不能由多个页面上的编辑器更改