TYPO3 Домен репозитория временно меняет настройки - PullRequest
0 голосов
/ 09 марта 2020

Обычно, если кто-то хочет запустить функцию findAll(), он / она должен определить Pid постоянства, чтобы TYPO3 знал, где искать. Если персистентный pid отсутствует, функция в хранилище сделает свое дело. Например:

 public function initializeObject() {
    $querySettings = $this->objectManager->get(Typo3QuerySettings::class);
    $querySettings->setRespectStoragePage(false);
    $this->setDefaultQuerySettings($querySettings);
 }

Но что произойдет, если у нас нет доступа к хранилищу? Я имею в виду, что хранилище принадлежит другому расширению, и вы не можете его редактировать. Решение состоит в том, чтобы расширить репозиторий до расширения extension , но иногда это слишком много, чтобы создать расширенную версию только для этого.

Вопрос здесь такой:

Как временно, только для этого запроса, изменить настройки репозитория, в этом случае изменить setRespectStoragePage на false.

1 Ответ

0 голосов
/ 09 марта 2020

После некоторого кодирования я наконец понял это.

Шаг 1.

создайте защищенную переменную, в которой вы хотите использовать запрос репозитория:

/**
* @var \TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface
*/
protected $querySettings;

Шаг 2.

Введите QuerySettingsInterface в текущий класс PHP. Если вы хотите использовать это в своем контроллере, то вы можете сделать что-то вроде этого:

public function __construct()
{
   parent::__contruct();
   $this->querySettings = $this->objectManager->get(QuerySettingsInterface::class);
}

в противном случае

public function __construct()
{
    $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
    $this->querySettings = $objectManager->get(QuerySettingsInterface::class);
}

Шаг 3

Наконец, вы можете установить следующие настройки:

$this->querySettings->setRespectStoragePage(false);
$this->contactRepository->setDefaultQuerySettings($this->querySettings);
$contacts = $this->contactRepository->findAll();

Простое расширение не требуется, просто для реализации функции в хранилище.

С уважением

...