如何为TYPO3扩展模块(后端部分)设置newRecordStoragePid?
关于TYPO3后端模块设置newRecordStoragePid的问题
首先得明确:你当前写的newRecordStoragePid配置是给前端插件用的,后端模块默认不会读取这个配置,所以系统才会继续用页面树选中的PID,这是正常现象。
下面给你几个规范的后端模块设置新记录PID的方法:
方法一:通过模块配置的overrideSettings传递
你可以在模块的TypoScript配置里添加overrideSettings,把存储PID传递给后端模块的逻辑:module.tx_dscontrolpanel_web_dscontrolpaneldscontrolpanel { settings { overrideSettings { newRecordStoragePid = 0 } } # 保留你原有的persistence、view配置... }不过要注意,部分自定义后端模块需要在控制器里主动读取这个配置值,再应用到新对象上,不然可能还是不生效。
方法二:在控制器中手动设置(最可靠)
直接在后端模块的控制器里,初始化新对象时指定PID,完全不受页面树选中状态影响。比如在initializeCreateAction或者createAction里添加代码:/** * 初始化创建动作,设置新记录的PID */ public function initializeCreateAction() { $newEntity = $this->arguments->getArgument('entitymodulelist')->getNewEntity(); // 这里设置你想要的PID,比如0 $newEntity->setPid(0); }这种方式可控性最强,适合需要精准控制的场景。
方法三:用TSconfig全局默认值
如果希望这个模型的所有新记录(包括列表模块创建的)都用指定PID,可以在根页面的TSconfig里配置:TCEMAIN.defaultValues { tx_dscontrolpanel_domain_model_entitymodulelist.pid = 0 }这个配置会全局生效,不管是在哪个后端模块创建该模型的记录。
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

