我正在开发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来重新发送网址吗?
任何暗示都非常感谢。
答案 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
}
}
}
}