Extbase UriBuilder и RealUrl по запросам Ajax - PullRequest
0 голосов
/ 19 октября 2018

Я разрабатываю плагин TYPO3, который выводит список записей в VueJS.Для этого я создал действие контроллера, которое возвращает запрошенные записи как json.

Каждая запись имеет свойство "uri", которое удерживает uri на своей странице сведений.Я генерирую этот URI с помощью Extbase uriBuilder.

Первые записи загружаются непосредственно в моем действии списка, где я назначаю этот набор записей приложению VueJs непосредственно во внешнем интерфейсе (v-bind: items = "my_json_objects").

Следующий набор записей будет загружен по требованию путем вызова моего API, который возвращает записи того же типа.

Проблема: uri, созданный uriBuilder, возвращает переписанный 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?

Любые намеки очень ценятся.

1 Ответ

0 голосов
/ 20 октября 2018

Как глупо.Uribuilder работает, но я забыл включить realurl в типе страницы, который обеспечивает вывод json.

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
        }
    }
}

}

...