0

我需要使用 REST 服务来获取一些数据到插件。为此,我使用以下命令覆盖了打字稿中的正常后端接口:

objects.Tx_Extbase_Persistence_Storage_BackendInterface.className = Tx_extensionname_Persistence_Storage_RestBackend

然后,当我使用以下方法时,此 BackendInterface 会在我的存储库中返回查询对象:

前任:

$query = $this->createQuery();
$query = $query->execute()->toArray();

在这里,$query 将来自服务的响应保存为 TYPO3 Tx_Extbase_Persistence_QueryInterface 对象。

问题是我需要能够在传递 ID 参数时调用服务(使用 /ID 附加到端点)。理想情况下,我会这样做,这样这个 repo 函数(在控制器中调用)会返回我想要的:

public function findById( $id ) {
    $query = $this->createQuery();

    $query->matching($query->equals('id', $id));

    return $query->execute()->toArray();
}

问题是我需要能够访问我的 Tx_extensionname_Persistence_Storage_RestBackend 中的查询约束。通常,我会使用 '$query->getConstraint()' 方法。但是,我们使用的是typo3 4.5,并且尚未为Tx_Extbase_Persistence_QueryInterface 定义此函数。

修改typo3核心以添加此功能不是一种选择。

我尝试扩展查询接口以在子类中添加此功能,以便在打字稿中覆盖该类,但后来意识到这不够可移植。我需要能够仅使用typo3 4.5 本机功能访问查询约束。

4

1 回答 1

0

好吧,我修好了。唯一需要做的是:

Tx_Extbase_Persistence_QueryInterface.className = Tx_MyExtension_Persistence_RestQuery


class Tx_MyExtension_Persistence_RestQuery extends Tx_Extbase_Persistence_Query implements Tx_MyExtension_Persistence_RestQueryInterface
{


}


interface Tx_MyExtension_Persistence_RestQueryInterface extends Tx_Extbase_Persistence_QueryInterface {

    public function getConstraint();

}
于 2014-05-23T19:05:31.160 回答