typo3 - 从调度程序任务中的存储库中删除所有()
问题描述
对于我的调度程序任务,我想在每次调度程序运行时在更新之前从存储库中删除所有现有数据。我可以使用 add() 从 XML 文件中保存和添加新数据。
类 FunctionFetcherService {
public function fetchRoomandLesson() {
$path = 'http:abc.dll?type=room&content=xml';
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
$roomRepository = $objectManager->get("School\\booking\\Domain\\Repository\\RoomsRepository");
$this->roomRepository->removeAll();
$xml = simplexml_load_file($path);
$json = json_encode($xml);
$xmlArray = json_decode($json, true);
$serialized_array = serialize($xmlArray);
$unserialized_array = unserialize($serialized_array);
在 Null 上调用 removeAll() 时发生错误。我还提到了已经提出的问题:在调度程序任务中使用 removeAll()但它不起作用。
解决方案
您应该创建一个Extbase CommandController作为您的调度程序任务。所有已注册的命令在调度程序和 CLI 命令中都可用。
通过使用 CommandControllers,您可以使用完整的 extbase 框架,例如依赖注入和验证。
请注意,CommandController 命令方法必须Command
像链接的示例一样后缀。
推荐阅读
- scrapy - 我想在scrapy中使用正则表达式提取url末尾的数字
- javascript - 如何使用通行证对用户和管理员进行身份验证
- tsql - 使用T-SQL在SSMS中执行SSIS(包)并返回一个值
- powershell - HKLM 的 Get-ChildItem 为 Windows Powershell 返回的结果少于为 VS2019 的 Developer Powershell 返回的结果
- r - 为什么某些 jsonl 文件无法在 SparklyR 中加载
- java - 异常:java.sql.SQLException:非法连接端口值 '3306:etude'
- app-inventor - MIT App Inventor 2 有没有办法刷新屏幕?
- c# - 使用 Chromium 在 WPF 中自动播放 YouTube 视频
- android - 如何在 Android Studio 中设置数据绑定?
- c++ - 为什么 switch 构造中的声明是合法的?