php - TYPO3 扩展库 : Access to external data sources (Typo3 "pages" table)

标签 php typo3 extbase typo3-6.1.x

我实际上正在为我的 pagetree 和内容元素的 xml 导出编写一个扩展。 通过以下示例,我在我的 Page 模型上映射了 typo3“pages”表:

# typo3conf/ext/my_publisher/Configuration/TypoScript/setup.txt
# Module configuration
module.tx_mypublisher.persistence.classes {
  Tx_MyPublisher_Domain_Model_Page {
    mapping {
      tableName = pages
      recordType = Tx_MyPublisher_Domain_Model_Page
      columns {
        uid.mapOnProperty =         uid
        pid.mapOnProperty =         pid
        sorting.mapOnProperty =     sorting
        deleted.mapOnProperty =     deleted
        title.mapOnProperty =       title
        is_siteroot.mapOnProperty = is_siteroot
      }
    }
  }
}

现在我想在我的 Controller 中检索页面...

$pages = $this->pageRepository->findAll();

此函数为我提供了我的模型表的结果,该表到目前为止是空的。 所以我想我的存储库中需要一些“初始化”方法来填充我的模型表, 但直到现在我还没有办法解决这个问题。

有人解决这个问题吗?

我使用 Typo3 6.1.1。

请原谅我的英语,我知道这不是最好的

最佳答案

首先:从您的映射中删除 recordType = Tx_MyPublisher_Domain_Model_Page,这会导致您的存储库仅包含作为您的页面创建的记录,我假设您想要gat 任何 页面。从字面上看,它包括您声明的条件,例如(取决于 TCA 设置)AND record_type = 'Tx_MyPublisher_Domain_Model_Page'...

其次:确保storagePid 在所有查询中都是IGNORED,如果您要强制执行一些storagePid 通过 TypoScript 你只会得到给定页面的子页面......最简单的方法是避免 storagePid 在整个 repo 中,将此方法添加到你的 PageRepository

public function initializeObject() {
    $this->defaultQuerySettings = $this->objectManager->create('Tx_Extbase_Persistence_Typo3QuerySettings');
    $this->defaultQuerySettings->setRespectStoragePage(FALSE);
}

第三种:使用this tip对于检查 pages 表的查询,它并不方便,但它是找到为什么你的 repo 没有获得所需数据的最快方法(只需复制语句并将其粘贴到你最喜欢的 DB GUI) .

(最好将其粘贴到您的问题中,这样我们就能看到问题所在)

如果被调试的语句中有AND pages.pid = ?这样的问号,当然需要用AND pages.pid = 123替换成需要的值

关于php - TYPO3 扩展库 : Access to external data sources (Typo3 "pages" table),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17212184/

相关文章:

typo3 - 修改流体的 f :format. 日期中的日期 - 使用内联表示法

typo3 - 在扩展名中按标题查找页面

php - 如何获取今天的当前时间经过百分比?

php - 将 HTML/PHP 从 Windows 保存到 Linux 的复杂性 - 换行解决方案不起作用

jquery - TYPO3 9.5 表单框架 AJAX

php - 第一次使用数组很慢

ssl - Typo3 多域与 ssl : TOO_MANY_REDIRECTS

php - 从 LinkedIn 导入 RSS 源?

javascript - 放大和缩小谷歌地图时出现不需要的折线渲染

typo3 - TYPO3 中 addModule 和 registerModule 的区别