【问题标题】:Extbase UriBuilder and RealUrl on Ajax RequestsAjax 请求上的 Extbase UriBuilder 和 RealUrl
【发布时间】:2018-10-19 16:20:45
【问题描述】:

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

每条记录都有一个属性“uri”,它将 uri 保存到其详细信息页面。我使用 Extbase uriBuilder 生成这个 uri。

第一条记录直接在我的列表操作中加载,我直接在前端将这组记录分配给 VueJs 应用程序 (v-bind:items="my_json_objects")。

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

问题:uriBuilder 构建的 uri 仅在第一种情况下返回重写的 url,当对象直接分配给 VueJS 时。对于 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 到 realurl 吗?

非常感谢任何提示。

【问题讨论】:

  • 您可能需要向 uriFor 方法添加更多信息(控制器、扩展、插件等),而不仅仅是操作名称。

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


【解决方案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
        }
    }
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    相关资源
    最近更新 更多