簡體   English   中英

TYPO3 域存儲庫臨時更改設置

[英]TYPO3 Domain repository temporarily change settings

通常,如果有人想要運行函數findAll() ,他/她必須定義持久性 Pid 以讓 TYPO3 知道在哪里查找。 如果持久性 pid 不存在,則存儲庫中的函數可以解決問題。 像下面這樣:

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

但是如果我們無權訪問存儲庫會發生什么? 我的意思是存儲庫屬於另一個擴展,你不能編輯它。 解決方案是將存儲庫擴展為擴展擴展,但有時僅為此創建擴展版本太多了。

這里的問題是:

我如何暫時僅針對此請求更改存儲庫的設置,在這種情況下將setRespectStoragePage更改為false

經過一些編碼,我終於想通了。

第1步。

創建一個受保護的變量,您想在其中使用存儲庫請求:

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

第2步。

在您當前的 PHP 類中注入QuerySettingsInterface 如果你想在你的控制器中使用它,那么你可以做這樣的事情:

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

簡單且無需擴展擴展即可實現存儲庫中的功能。

此致

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM