[TYPO3-mvc] Running Fluid within tslib_pibase

Xavier Perseguers typo3 at perseguers.ch
Sat Mar 20 11:43:44 CET 2010


Hi Fabien,

> I am wondering if there is any pointers about running Fluid in
> tslib_pibase like: code example, discussion in the ML or something else...
>
> I already managed to run Fluid in an external project which had nothing
> to do with TYPO3 but I remember it was a kind of "do-it-yourself". :D

I did it once and this was basically like that:

	/**
	 * The main method of the plugin.
	 *
	 * @param string $content (UNUSED) The plugin content
	 * @param array $settings The plugin configuration
	 * @return string Content that is displayed on the website
	 * @author Xavier Perseguers <xp at sws.ch>
	 */
	public function main($content, array $settings) {
		$this->init($settings, array('referenceFields'));
		$this->pi_setPiVarDefaults();
		
		$this->initializeRenderer();

		// Stuff to generate content (typically accumulated in $this->content)

		return $this->content;
	}


	/**
	 * Initialize the renderer to be used.
	 *
	 * @return void
	 * @author Xavier Perseguers <xp at sws.ch>
	 */
	protected function initializeRenderer() {
		$this->renderer = t3lib_div::makeInstance('Tx_Fluid_View_TemplateView');
		$this->renderer->setControllerContext(t3lib_div::makeInstance('Tx_Extbase_MVC_Controller_ControllerContext'));
	}

Then something like:

$template = t3lib_extMgm::extPath($this->extKey) . 'Resources/Private/Templates/Activities/details.html';
$this->renderer->setTemplatePathAndFilename($template);

and the

$this->renderer->assign('someVariable', $someValue);

and accumulate your result in $this->content with something like:

$this->content .= $this->renderer->render();

You may of course not accumulate any content and simply return $this->renderer->render() in main() but in my case, I had to create multiple parts of content, each of them with a dedicated renderer. I 
guess you got the idea and I guess this is what you basically did when you "did-it-yourself" ;-)

Cheers

-- 
Xavier Perseguers
http://xavier.perseguers.ch/en


More information about the TYPO3-project-typo3v4mvc mailing list