Intereting Posts
Маршрутизация в zendframework 2 не работает Неустранимая ошибка: вызов неопределенной функции mb_substr () агрегирование ответов для вызова PodioItem: filter () Выпадающее окно php country by maxmind geoip Вызов неопределенной функции curl_init () – с помощью WAMP symfony2: как получить доступ к сервису из шаблона mod_fcgid и время жизни XCache Динамическое добавление строк в таблицу HTML Использование JavaScript и получение значения текстового поля для каждого текстового поля путем отправки кнопки Получить все родительские ключи заданного дочернего ключа в массиве Необходимое руководство по перенаправлению пользователя, если он не вошел в систему на панели администратора Как установить абсолютный путь include в PHP? округленное значение десятичной запятой до второй цифры после последнего 0 Добавление разных случайных чисел в URL-адрес в массиве Javascript на каждом цикле Перебирайте сообщения WordPress и оберните каждое сообщение X в DIV Можно ли передавать имена индекса массива внутри функции

Выполнение функций репозитория в задаче планировщика

В настоящее время у меня есть задача планировщика, но я хочу использовать функцию из моего репозитория extbase (в том же расширении).

Я продолжаю получать «PHP Fatal error: вызов функции-члена add () для не-объекта», независимо от того, как я пытаюсь включить мой репо или контроллер из extbase.

My SampleTask.php:

namespace TYPO3\ExtName\Task; class SampleTask extends \TYPO3\CMS\Scheduler\Task\AbstractTask { public function execute() { $controller = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('\TYPO3\ExtName\Controller\SampleController'); $new = new \TYPO3\ExtName\Domain\Model\Sample; $new->setName('test'); $controller->createAction($new); } } 

И правильно определено в моем ext_localconf.php

Может кто-нибудь объяснить мне, как я могу получить доступ к моему репозиторию (или контроллеру) -extbase- из моего SampleTask.php.

Использование TYPO3 6.2.

Спасибо.

Related of "Выполнение функций репозитория в задаче планировщика"

Вы получаете эту ошибку php, потому что вы создали свой контроллер с makeInstance() . Если вы используете makeInstance для получения objectManager ( \TYPO3\CMS\Extbase\Object\ObjectManager ) и используете $objectManager->get('TYPO3\ExtName\Controller\SampleController') , то инъекция зависимостей внутри вашего контроллера будет работать (например, ваша хранилище).

Но вы можете использовать objectManager, чтобы сразу же получить репозиторий, поэтому вам не нужно вызывать действие контроллера:

Что-то вроде этого:

 namespace TYPO3\ExtName\Task; class SampleTask extends \TYPO3\CMS\Scheduler\Task\AbstractTask { public function execute() { $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('\TYPO3\CMS\Extbase\Object\ObjectManager'); $sampleRepository= $objectManager->get('\TYPO3\ExtName\Domain\Repository\SampleRepository'); $new = new \TYPO3\ExtName\Domain\Model\Sample; $new->setName('test'); $sampleRepository->add($new); $objectManager->get('TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface')->persistAll(); } }