Typo3 9.x AJAX Call - PullRequest
       4

Typo3 9.x AJAX Call

1 голос
/ 14 мая 2019

Конфигурация об одном маршруте для вызова 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

и т. Д. И т. Д.

Я хочуодин маршрут от root '/getamministrazioni.json

как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Я нашел другое решение.Я создаю плагин и использую контроллер для печати JSON, и я возвращаю false.В настройках шаблона все html и я меняем тип содержимого заголовка.Поэтому на каждой странице я вставляю плагин в качестве контента, который печатает JSON

0 голосов
/ 15 мая 2019

Существует возможность ограничить маршрутизацию конкретными идентификаторами страниц:

limitToPages: 1

Но это ограничит всю вашу конфигурацию отображения идентификатором страницы 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. Перенаправить ваш тип страницы json на страницу ошибки, если идентификатор страницы не равен 0 (нет необходимости в маршрутизации, поскольку TypoScript избегает доставки этого типа страницы)

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

...