2017-06-20 92 views
2

在我的擴展中,我想按標題查找頁面。 我嘗試:按擴展名稱查找頁面

/** 
* PageRepository 
* 
* @var \TYPO3\CMS\Frontend\Page\PageRepository 
* @inject 
*/ 
protected $pageRepository = NULL; 

然後

$this->pageRepository->findByTitle('my title'); 

我得到的錯誤:

Oops, an error occurred: Call to undefined method TYPO3\CMS\Frontend\Page\PageRepository::findByTitle() 

如何通過標題找到一個頁面?

+0

您可以從[getRecordsByField()](https://api.typo3.org/typo3cms/current/html/_page_repository_8php_source.html#l01216)方法嘗試'\ TYPO3 \ CMS \前端\ Page \ PageRepository'類。 – ravisachaniya

+0

@ravisachaniya:讓它成爲一個完整的答案。 –

回答

2

getRecordsByField()\TYPO3\CMS\Frontend\Page\PageRepository類的方法返回的頁面的記錄陣列。

您需要將頁面標題傳遞到方法的第三個參數中,如下所示。

$pagesArr = $this->pageRepository->getRecordsByField('pages', 'title', 'my title'); 

Here is the documentation about the : PageRepository Class Referencehttps://api.typo3.org/typo3cms/current/html/class_t_y_p_o3_1_1_c_m_s_1_1_frontend_1_1_page_1_1_page_repository.html#a7943e29e2820497d6e30b1414120075e

+0

這工作!謝謝 –

1

方法findByTitle()不由pageRepository提供。您可以使用getPage()方法使用頁面Uid,如下所示。

$this->pageRepository = GeneralUtility::makeInstance(\TYPO3\CMS\Frontend\Page\PageRepository::class); 
$page = $this->pageRepository->getPage($pageId, false);