首页 > 解决方案 > Typo3 9.x ajax 调用

问题描述

ajax调用单路由配置:getamministrazioni.json

我尝试更改配置站点如下:

...


    routeEnhancers:
      News:
        type: Extbase
        extension: News
        plugin: Pi1
        routes:
          -
            routePath: '/{news-title}'
            _controller: 'News::detail'
            _arguments:
              news-title: news
        aspects:
          news-title:
            type: PersistedAliasMapper
            tableName: tx_news_domain_model_news
            routeFieldName: path_segment
      PageTypeSuffix:
        type: PageType
        default: .html
        map:
          .html: 0
          getamministrazioni.json: 1035343

    errorHandling: {  }
    routes: {  }
...

在 setup.typoscript 我有:

GetAmministrazioni = PAGE
GetAmministrazioni {
typeNum = 1035343
config {
    disableAllHeaderCode = 1
    debug = 0
    no_cache = 1
    additionalHeaders {
      10 {
        header = Content-Type: application/json
        replace = 1
      }
    }
}
 10 < tt_content.list.20.my_controller_getamministrazioni

}

它适用于所有页面。

  1. /home/getamministrazioni.json
  2. /page1/getamministrazioni.json

等等……等等……

我想要一条来自根目录'/getamministrazioni.json 的路由

我怎么能这样做?

标签: ajaxroutestypo3

解决方案


有可能将路由限制为特定的页面 id:

limitToPages: 1

但这会将您的整个映射配置限制为页面 id 1,以及 .html 后缀(我猜您不想这样做)。

不幸的是,目前无法创建多个具有相同名称的路由增强器,如下面的非工作示例

PageTypeSuffix:
  type: PageType
  map:
    .html: 0
PageTypeSuffix:
  type: PageType
  limitToPages: 1
  map:
    sitemap.xml: 1533906435

两种可能的解决方法:

  1. 创建您自己的 RouteEnhancer,它只是扩展 TYPO3\CMS\Core\Routing\Enhancer\PageTypeDecorator 以允许使用不同的名称(请参阅自定义增强器

  2. 如果页面 id 不为 0,则将您的 json 页面类型重定向到错误页面(无需路由,因为 TypoScript 避免传递此页面类型)

    [getTSFE().id != 1] seo_sitemap.config { additionalHeaders.10 { header = Location: /error.html } } [END]


推荐阅读