Жидкость TYPO3: использование собственного средства визуализации жидкости терпит неудачу, поскольку TYPO3 4.6

Я использовал в расширении собственный рендеринг жидкости:

/** * Makes and returns a fluid template object * * @return Tx_Fluid_View_TemplateView the fluid template object */
protected function makeFluidTemplateObject() { /** @var Tx_Fluid_View_TemplateView $fluidTemplate */ $fluidTemplate = t3lib_div::makeInstance('Tx_Fluid_View_TemplateView'); // Set controller context $controllerContext = $this->buildControllerContext(); $controllerContext->setRequest($this->request); $fluidTemplate->setControllerContext($controllerContext); return $fluidTemplate;
}

Я использую этот $fluidTemplate позже, чтобы назначить шаблон файл, переменные и сделать его:

/** * Gets the mail message * * @param mixed $registration model to give to template * @param string $templatePath path of fluid template * * @return string The rendered fluid template (HTML or plain text) */
public function getMailMessage($registration, $templatePath) { $mailTemplate = t3lib_div::getFileAbsFileName($templatePath); if (!file_exists($mailTemplate)) { throw new Exception('Mail template (' . $mailTemplate . ') not found. '); } $this->fluidTemplate->setTemplatePathAndFilename($mailTemplate); // Assign variables $this->fluidTemplate->assign('registration', $registration); $this->fluidTemplate->assign('settings', $this->settings); return $this->fluidTemplate->render();
}

Все работает, кроме вызова ->render(). Я получаю ошибку 500 без какого-либо определенного исключения, так как TYPO3 4.6. С TYPO3 4.5 LTS он работает!

Надеюсь, у кого-то есть идея. Заранее спасибо!

1 ответ

Начиная с TYPO3 v4.6 вам больше не нужно создавать весь контекст контроллера. Теперь он обрабатывается через Tx_Fluid_View_StandaloneView (Fluid 1.4.0)

Инициализировать представление:

protected function makeFluidTemplateObject() { $this->fluidTemplate = t3lib_div::makeInstance('Tx_Fluid_View_StandaloneView'); return $this->fluidTemplate;
}

Функция getMailMessage($registration, $templatePath) остается неизменной.

licensed under cc by-sa 3.0 with attribution.