Extbase render Partials im Controller mit Ajax

  • deus deus
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    21. 06. 2012, 16:20

    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:

    1. $res = t3lib_extMgm::extPath($this->controllerContext->getRequest()->getControllerExtensionKey()) . 'Resources/Private/';
    2. $view->setLayoutRootPath($res);
    3. $view->setPartialRootPath($res . 'Partials/');
    4. $view->setRenderingContext($this->objectManager->create('Tx_Fluid_Core_Rendering_RenderingContext'));
    5. $view->setControllerContext($this->controllerContext);
    6.  
    7. $arguments = array();
    8. $template = $view->renderPartial("DeclineReason/Declinelist", NULL, $arguments);

    Irgendwie komme ich da nicht auf eine Lösung. Hat jemand von euch eine Idee?


  • 1
  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    22. 06. 2012, 08:21

    Fluid Standalone View

    http://www.aemka.de/

  • deus deus
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    25. 06. 2012, 08:41

    Hallo aemka.
    Vielen Dank für deine Antwort. Habe es jetzt mal so versucht:

    im Controller in einer Action habe ich folgenden Code:

    1. $arguments = array();
    2.  
    3. $view = t3lib_div::makeInstance('Tx_Fluid_View_StandaloneView');
    4. $res = t3lib_extMgm::extPath($this->controllerContext->getRequest()->getControllerExtensionKey()) . 'Resources/Private/';
    5. $view->setLayoutRootPath($res);
    6. $view->setPartialRootPath($res . 'Partials/');
    7. $view->setRenderingContext($this->objectManager->create('Tx_Fluid_Core_Rendering_RenderingContext'));
    8. $view->setControllerContext($this->controllerContext);
    9. $template = $view->renderPartial("DeclineReason/Declinelist", NULL, $arguments);
    10. echo json_encode($template);

    Leider bekomme ich als Fehlermeldung immer:

    1. <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:

    1. $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.

  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    25. 06. 2012, 09:22

    Gib doch "Fluid Standalone View" mal in Google ein - gleich der erste Treffer erklärt es im Detail.

    http://www.aemka.de/

  • deus deus
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    25. 06. 2012, 10:09

    So jetzt habe ich es mal so halbwegs hinbekommen:

    1. $view = t3lib_div::makeInstance('Tx_Fluid_View_StandaloneView');
    2. $res = t3lib_extMgm::extPath($this->controllerContext->getRequest()->getControllerExtensionKey()) . 'Resources/Private/';
    3. $view->setLayoutRootPath($res.'Layouts/');
    4. $view->setTemplatePathAndFilename($res . 'Templates/DeclineReason/Declinelist.html');
    5. $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)
    [b]#1289386765: Could not analyse class:Tx_Fluid_ViewHelpers_SelectViewHelper maybe not loaded or no autoloader?[/b]

    Wie kann man den Fluid-Autoloader aktiviren?

  • deus deus
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    25. 06. 2012, 10:21

    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!

  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    25. 06. 2012, 10:22

    gleiche noch mal deinen COde mit dem ersten Google Treffer zu dem Thema ab - da sind noch Unterschiede.

    http://www.aemka.de/

  • 1