Как визуализировать шаблон представления Fuid без Extbase? I. e шаблон электронной почты по eID

Я хочу отправить электронное письмо с помощью сценария eID TYPO3, используя файл шаблона Fluid для отображения тела письма. Я не смог найти простой способ инициализации Fuid View вне обычного контекста MVC Extbase. Все источники, которые я нашел, казались устаревшими и очень сложными.

Итак, что нужно для рендеринга жидкого шаблона?

1 ответ

Решение

Вот простая функция, которую я написал для визуализации моих шаблонов.

/**
 * Renders the fluid email template
 * @param string $template
 * @param array $assign
 * @return string
 */
public function renderFluidTemplate($template, Array $assign = array()) {
    $templatePath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('EXT:myextension/Resources/Private/Templates/' . $template);

    $view = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Fluid\\View\\StandaloneView');
    $view->setTemplatePathAndFilename($templatePath);
    $view->assignMultiple($assign);

    return $view->render();
}

echo renderFluidTemplate('mail.html', array('test' => 'This is a test!'));

И текучий шаблон в typo3conf/ext/mytemplate/Resources/Private/Templates/mail.html может выглядеть так:

Hello
{test}

С выходом

Hello
This is a test!

Вам нужны макеты и частичные?

/**
 * Returns the rendered fluid email template
 * @param string $template
 * @param array $assign
 * @param string $ressourcePath
 * @return string
 */
public function renderFluidTemplate($template, Array $assign = array(), $ressourcePath = NULL) {
    $ressourcePath = \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName($ressourcePath === NULL ? 'EXT:myextension/Resources/Private/' : $ressourcePath);

    /* @var $view \TYPO3\CMS\Fluid\View\StandaloneView */
    $view = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Fluid\\View\\StandaloneView');
    $view->setLayoutRootPath($ressourcePath . 'Layouts/');
    $view->setPartialRootPath($ressourcePath . 'Partials/');
    $view->setTemplatePathAndFilename($ressourcePath . 'Templates/' . $template);
    $view->assignMultiple($assign);

    return $view->render();
}
Другие вопросы по тегам