Hallo.
Ich habe folgendes Problem bei meiner Extbase-Extension:
Ich würde gerne bei einem Ajax-Request ein Partial rendern und zurückgeben.
Habs mal so versucht:
$res = t3lib_extMgm::extPath($this->controllerContext->getRequest()->getControllerExtensionKey()) . 'Resources/Private/';
$view->setLayoutRootPath($res);
$view->setPartialRootPath($res . 'Partials/');
$view->setRenderingContext($this->objectManager->create('Tx_Fluid_Core_Rendering_RenderingContext'));
$view->setControllerContext($this->controllerContext);
$arguments = array();
$template = $view->renderPartial("DeclineReason/Declinelist", NULL, $arguments);
Irgendwie komme ich da nicht auf eine Lösung. Hat jemand von euch eine Idee?
Hallo aemka.
Vielen Dank für deine Antwort. Habe es jetzt mal so versucht:
im Controller in einer Action habe ich folgenden Code:
$arguments = array();
$view = t3lib_div::makeInstance('Tx_Fluid_View_StandaloneView');
$res = t3lib_extMgm::extPath($this->controllerContext->getRequest()->getControllerExtensionKey()) . 'Resources/Private/';
$view->setLayoutRootPath($res);
$view->setPartialRootPath($res . 'Partials/');
$view->setRenderingContext($this->objectManager->create('Tx_Fluid_Core_Rendering_RenderingContext'));
$view->setControllerContext($this->controllerContext);
$template = $view->renderPartial("DeclineReason/Declinelist", NULL, $arguments);
echo json_encode($template);
Leider bekomme ich als Fehlermeldung immer:
<b>Fatal error</b>: __clone method called on non-object in <b>/usr/www/users/ltcdwu/typo3/sysext/fluid/Classes/View/AbstractTemplateView.php</b> on line <b>312</b><br />
Im AbstractTemplateView.php steht an der Zeile 312 folgendes:
$renderingContext = clone $this->getCurrentRenderingContext();
Hat noch wer dazu einen Tip oder ein komplettes Beispiel wie der Controller-Code aussehen muss, damit Partials mit Fluid gerendert werden können.
Gib doch "Fluid Standalone View" mal in Google ein - gleich der erste Treffer erklärt es im Detail.
So jetzt habe ich es mal so halbwegs hinbekommen:
$view = t3lib_div::makeInstance('Tx_Fluid_View_StandaloneView');
$res = t3lib_extMgm::extPath($this->controllerContext->getRequest()->getControllerExtensionKey()) . 'Resources/Private/';
$view->setLayoutRootPath($res.'Layouts/');
$view->setTemplatePathAndFilename($res . 'Templates/DeclineReason/Declinelist.html');
$template = $view->render();
Ich war immer so auf die Partials versteift.
Jetzt habe ich aber folgendes Problem:
Wenn ich in "Declinelist.html" Viewhelper zB: <f:select ... /> verwenden möchte, bekomme ich folgende Fehlermeldung (zu der ich nichts in google finden kann)
#1289386765: Could not analyse class:Tx_Fluid_ViewHelpers_SelectViewHelper maybe not loaded or no autoloader?
Wie kann man den Fluid-Autoloader aktiviren?
So jetzt klappt alles.
Habe nochmal alle Caches gelöscht und die View nochmal neu erstellt und siehe da, jetzt funktioniert es!
Vielen Dank nochmal aemka!
gleiche noch mal deinen COde mit dem ersten Google Treffer zu dem Thema ab - da sind noch Unterschiede.