removeAll () из репозитория в задаче планировщика - PullRequest
0 голосов
/ 21 января 2019

Для моей задачи планировщика я хочу удалить все существующие данные из репозитория перед обновлением, каждый раз, когда запускается планировщик. Я могу сохранять и добавлять новые данные из XML-файла, используя add ().

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);

Произошла ошибка. RemoveAll () вызвано для Null. Я также сослался на уже заданный вопрос: используйте removeAll () в задаче планировщика , но это не работает.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вы должны создать Extbase CommandController в качестве задачи планировщика. Все зарегистрированные команды доступны в планировщике, а также команды CLI.

Используя CommandControllers, вы можете использовать полную среду extbase, такую ​​как внедрение зависимостей и проверки.

Обратите внимание, что методы команд CommandController должны иметь суффикс Command, как в связанном примере.

0 голосов
/ 21 января 2019

Вы создаете хранилище как переменную $roomRepository, а затем пытаетесь получить к нему доступ через $this->roomRepository.Изменение $this->roomRepository на $roomRepository должно исправить ошибку.

...