对于我的调度程序任务,我想在每次运行调度程序时从存储库中删除所有现有数据,然后再对其进行更新。我能够使用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,但是它不起作用。
答案 0 :(得分:0)
您将存储库创建为变量@FormDataParam("myParam") @NotEmpty String myParam
,然后尝试通过$roomRepository
访问它。将$this->roomRepository
更改为$this->roomRepository
应该可以解决该错误。
答案 1 :(得分:0)
您应该创建一个Extbase CommandController作为调度程序任务。调度程序和CLI命令中都提供了所有已注册的命令。
通过使用CommandControllers,您可以使用完整的extbase框架,例如依赖项注入和验证。
请注意,就像链接的示例一样,CommandController命令方法必须带有Command
后缀。