从调度程序任务中的存储库中删除removeAll()

时间:2019-01-20 22:15:50

标签: typo3 extbase

对于我的调度程序任务,我想在每次运行调度程序时从存储库中删除所有现有数据,然后再对其进行更新。我能够使用add()从XML文件保存和添加新数据。

Class 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()时发生错误。我还提到了已经问过的问题:use removeAll() in scheduler task,但是它不起作用。

2 个答案:

答案 0 :(得分:0)

您将存储库创建为变量@FormDataParam("myParam") @NotEmpty String myParam ,然后尝试通过$roomRepository访问它。将$this->roomRepository更改为$this->roomRepository应该可以解决该错误。

答案 1 :(得分:0)

您应该创建一个Extbase CommandController作为调度程序任务。调度程序和CLI命令中都提供了所有已注册的命令。

通过使用CommandControllers,您可以使用完整的extbase框架,例如依赖项注入和验证。

请注意,就像链接的示例一样,CommandController命令方法必须带有Command后缀。