Extbase UriBuilder и RealUrl по запросам Ajax
Я разрабатываю плагин 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 ответ
Как глупо. 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
}
}
}
}