我正在尝试使用TYPO3和自TYPO3 v9起可用的新RouteEnhancers来建立REST之类的API。就我而言,我需要通过扩展程序来设置/扩展站点配置,而不是编辑config.yaml,因为在安装扩展程序或创建新的站点配置后,您不想复制某些代码。是否有针对这种情况的最佳实践解决方案?
routeEnhancers:
MyExtensionlugin:
type: Extbase
extension: MyExtension
plugin: Listing
routes:
- { routePath: '/api/objects', _controller: 'Api::list', _arguments: {'pageType': '1557996244'} }
- { routePath: '/api/objects/{objectUid}', _controller: 'Api::show', _arguments: {'pageType': '1557996244'} }
defaultController: 'Api::list'
defaults:
objectUid: '0'
requirements:
objectUid: '\d+'
Run Code Online (Sandbox Code Playgroud) 在尝试将对象分配给控制器操作中的视图时,我收到以下消息,因为该对象未持久化:
无法序列化域对象供应商\扩展\域\模型\对象。它既不是设置了身份属性的实体,也不是值对象。
是否有可能在不创建数据库条目的情况下将此对象添加到视图中?
通常会显示将数据处理器添加到 PAGE 或 FLUIDTEMPLATE 的方法。如何将其分配给 TYPO3 插件?
对于 PAGE,你可以这样做:
page {
10 {
dataProcessing {
1558428437 = BK2K\BootstrapPackage\DataProcessing\ConstantsProcessor
1558428437 {
as = myconstants
key = settings.constants
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是你能做这样的事情吗:
config.tx_extbase {
dataProcessing {
1558428437 = BK2K\BootstrapPackage\DataProcessing\ConstantsProcessor
1558428437 {
as = myconstants
key = settings.constants
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!
从特定对象获取表名的最佳方法是什么?是否有类似的东西:
$tableName = Utility::doSomeMagic($object);
Run Code Online (Sandbox Code Playgroud)
这样您就可以从Vendor \ Extkey \ Domain \ Model \ MyObject中获得tx_extkey_domain_model_myobject。