Для расширения TYPO3 Extbase Extension я хочу сделать какую-то разбивку на страницы. Адакс-вызов и все остальное пока прекрасны. Но когда я пытаюсь получить доступ к массиву $this->settings
во время вызова ajax, где хранятся значения плагина интерфейса flexform, я всегда получаю null
. Часть выглядит следующим образом:TYPO3 Flexform Настройки недоступны во время вызова Ajax
$limit = $this->settings['result']['amount'];
$orderType = $this->settings['order']['type'];
$orderFields = $this->settings['additionorder']['fields'];
$formArr = array();
$this->request->hasArgument('offset') ? $offset = $this->request->getArgument('offset') : null;
$forms = $this->formRepository->findFormsChunked(
$orderFields, $orderType, $limit, $offset
);
foreach ($forms as $key => $form) {
$formArr[] = array(
'formUid' => $form->getUid(),
'formName' => $form->getName(),
'formFile' => $form->getFile()->getOriginalResource()->getPublicUrl(),
'formType' => $form->getFormtype()->getUid()
);
}
return json_encode($formArr);
и $ this-> Настройки равно нулю во время моего AJAX вызова, но я не могу понять, почему. Являются ли значения доступными только во время процесса рендеринга, чего не происходит во время вызова ajax?
Спасибо за помощь.
UPDATE
Насколько я знаю, значения Flexform передаются только в выбранном контроллере действия (т.е. displaycond), как это:
<displayCond>FIELD:switchableControllerActions:=:Controller->ajax:AND:FIELD:switchableControllerActions:=:Controller->normal</displayCond>
и в меню выбора:
<numIndex index="1">
<numIndex index="0">LLL:EXT:ext_formpool/Resources/Private/Language/locallang.xlf:name</numIndex>
<numIndex index="1">Controller->normal;Controller->ajax</numIndex>
</numIndex>
Значения также должны передаваться в ajaxAction? На данный момент они не доступны ...
Solution
К сожалению, это просто не работает, если вы делаете AJAX звонки с отдельным типом страницы. Flexform хранится в базе данных и анализируется только во время процесса загрузки. Вы можете проверить это, включив диспетчер конфигурации и попытайтесь проанализировать поле «pi_flexform» объекта контента. Или вы вводите flexformservice, который также не загружается во время вызова ajax. Для этого вам нужно использовать eID-механизм.
Как вы Аякса позвонить? Использование eID, тип страницы или расширение Helmut Hummels [typoscript_rendering] (http://typo3.org/extensions/repository/view/typoscript_rendering)? – Jost
Я использую Ajax с прилежащим типа страницы, как это: '# PageType для AjaxCalls ajaxCall = PAGE ajaxCall { typeNum = 999 config.disableAllHeaderCode = 1 config.metaCharset = UTF-8 10 = COA 10
TheFlame