我需要使用REST服务才能将一些数据添加到插件中。为此,我使用以下命令覆盖了typoscript中的正常后端接口:
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核心以添加此功能不是一种选择。
我试图扩展Query Interface以在子类中添加此functionnality,然后在typoscript中覆盖该类,但后来意识到这将不够便携。我需要能够仅使用typo3 4.5本机功能访问查询约束。
答案 0 :(得分: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();
}