Extbase UriBuilder和RealUrl处理Ajax请求

时间:2018-10-19 16:20:46

标签: vue.js typo3 extbase typo3-8.x

我正在开发TYPO3插件,该插件在VueJS中输出记录列表。 为此,我创建了一个控制器操作,该操作将请求的记录作为json返回。

每个记录都有一个属性“ uri”,它将uri保留在其详细信息页面上。我使用Extbase uriBuilder生成此uri。

第一个记录直接在我的list动作中加载,在这里我直接在前端将这组记录分配给VueJs应用程序(v-bind:items =“ my_json_objects”)。

将通过调用返回相同类型记录的API来按需加载下一组记录。

问题:当对象直接分配给VueJS时,uriBuilder构建的uri仅在第一种情况下返回重写的url。对于ajax调用加载的所有项目,uribuilder返回未重写的URL。

两个动作都调用相同的方法来构建uri:

$item['uri'] = $this->buildShowUri($item);

构建uri的方法:

return $this->uriBuilder
        ->reset()
        ->setTargetPageUid(56) // currently static, for testing
        ->setCreateAbsoluteUri(true)
        ->uriFor(
            'show',
            [
                'item' => $item,
            ]
        );

是否可以通过这种方式触发url重写?我需要在某个地方注册uri来重新发送网址吗?

任何暗示都非常感谢。

1 个答案:

答案 0 :(得分:1)

多么愚蠢。 uribuilder可以工作,但是我忘了在提供json输出的页面类型中启用realurl。

json = PAGE
json {
config {
    linkVars = L(0-4)
    **tx_realurl_enable = 1**
    sys_language_mode = strict
    disableAllHeaderCode = 1
    debug = 0
    no_cache = 1
    additionalHeaders {
        10 {
            header = Content-Type: application/json
            replace = 1
        }
    }
}
typeNum = 129912

10 = USER
10 {
    userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    extensionName = MyExt
    pluginName = Plug
    vendorName = Myself
    controller = Events
    action = apiList
    switchableControllerActions {
        Event {
            1 = apiList
        }
    }
}

}