2014-09-10 11 views
2

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

Так что же необходимо для визуализации жидкого шаблона?

ответ

3

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

/** 
* 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/внутр/MyTemplate/Ресурсы/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(); 
} 
+0

TIP: вместо того, чтобы использовать 'eID' - использовать действие Extbase с Bootstrap в TypoScript с выделенной типа страницы. – biesior

+0

Но если мне не нужны TSFE и другие тяжелые вещи, то eID является предпочтительным решением. А как насчет рендеринга двух разных «просмотров» в одном запросе? – Ludwig

+0

вы можете использовать StandaloneView или '$ this-> forward ('other')' для рендеринга 'otherAction()' – biesior

 Смежные вопросы

  • Нет связанных вопросов^_^