Контроллер команд планировщика расширения Typo3 - PullRequest
0 голосов
/ 06 июня 2018

вот проблема, с которой я столкнулся при разработке расширений TYPO3.

Я написал расширение TYPO3.В браузере будут отображаться новости в БД.Но я хотел бы настроить задачу планировщика для периодического обновления новостей в БД, которые будут отображаться.

При написании этой задачи планировщика я использовал командный контроллер.

namespace Vendor\Extension\Command;

class CheckNewsCommandController extends \TYPO3\CMS\Extbase\Mvc\Controller\CommandController
{
    public function simpleCommand()
    {
        $newsRepository = $this->objectManager->get( \Vendor\Extension\Domain\Repository\NewsRepository::class );
        \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($newsRepository);

        $all_news = $newsRepository->findAll();
        \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($all_news);
    }
}

Но переменная $ all_news ничего не содержит, она равна NULL !!!Это означает, что findAll () Функция NewsRepository НЕ работает вообще !!!

Для сравнения, я также использовал этот NewsRepository в обычном классе контроллеров: Vendor \ Extension \ Controller \ NewsController

namespace Vendor\Extension\Controller;

class NewsController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{
    public function listAction()
    {
        $newsRepository = $this->objectManager->get( \Etagen\EtSocNewsSt\Domain\Repository\NewsRepository::class );

        $all_news = $newsRepository->findAll();
        \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($all_news);
    }

И, в NewsController , функция NewsRepository:: findAll () DID действительно работает и возвращает все записи в БД.

Итак, кто может сказать мне, почему функция репозитория будет ONLY работать в классе Vendor \ Extension \ Controller \ NewsController , но NOT работают в классе Vendor \ Extension \ Command \ CheckNewsCommandController ?

1 Ответ

0 голосов
/ 06 июня 2018

Ответ EASY : вам нужно определить storagePid для ваших записей новостей в CommandController ИЛИ изменить настройки репозитория новостей на IGNORE storagePid.

Как установить storagePid для CommandController: https://worksonmymachine.org/blog/commandcontroller-and-storagepid

Как настроить хранилище для игнорирования storagePid: http://typo3.sascha -ende.de / docs / development / database /как игнорируемый-на-страница-ID-PID-в-хранилища-БД-запрос /

...