首页 > 解决方案 > Typo3 为 CommandController 命令定义 storagePid

问题描述

我想使用 CommandController(调度程序)导入不同的数据。我已经发现可以设置一个全局 storagePid 如下:

module.tx_myextension.persistence.storagePid = 123

来源:https ://worksonmymachine.org/blog/commandcontroller-and-storagepid

这很好,但我的扩展包含多个模型,应该保存在不同的 Pid 上

我还发现了一篇旧帖子,有人说可以为每个模型定义一个 pid,这正是我所需要的:

module.tx_myextension.persistence.classes.tx_myextension_domain_model_player.storagePid = 124
module.tx_myextension.persistence.classes.tx_myextension_domain_model_customer.storagePid = 125

来源:https ://typo3-german.typo3.narkive.com/WxjjtxXa/scheduler-storage-pid

但似乎这条线被忽略了。这是正确的方法还是我做错了什么?

我在 TYPO3 6.2.44

标签: typo3schedulertyposcriptextbasetypo3-6.2.x

解决方案


我建议为控制器操作创建参数。每个模型都有一个存储 pid。

所以你有了myCommand($domain1Pid, $domain2Pid,$domain3Pid, ...)

现在作为函数中的第一次调用,您将获取存储库的 querySettings 并应用存储 pid:

$querySettings = $this->domain1Repository->createQuery()->getQuerySettings();
$querySettings->setStoragePageIds([$domain1Pid]);
$this->domain1Repository->setDefaultQuerySettings($querySettings);

对每个存储库重复此操作。在调度程序作业设置或 cli 中,您现在可以为每个存储定义 pid。

顺便说一句:您还可以使用$domain->setPid(123)设置每个模型的 pid 保存位置。


推荐阅读