2017-11-30 6 views
0

Ich habe Typo3 von Version 4 auf Version 7 aktualisiert und der Ajax-Endpunkt funktioniert nicht mehr, ist jemand weiß, ob undokumentiert sind Änderungen in der Verwendung der einfachen Ajax-Endpunktdefinition in Typoscript? Oder kann es sein, dass die anfragende URL jetzt anders ist?Ajax Endpoint funktioniert nicht mehr nach der Aktualisierung von Typo3 von Version 4.x auf 7.x

Die ursprüngliche Definition sieht wie folgt aus:

tx_courses_ajax = PAGE 
tx_courses_ajax { 
    typeNum = 1337 
    10 = USER 
    10 { 
     #userFunc = tx_extbase_core_bootstrap->run 
     userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run 
     extensionName = courses 
     pluginName = calendar 
     switchableControllerActions { 
      Seminars { 
       1 = getEvent 
       2 = calendar 
       3 = getEvents 
      } 
     } 
     settings =< plugin.tx_courses.settings 
     persistence =< plugin.tx_courses.persistence 
     view =< plugin.tx_courses.view 
    } 
    config { 
     disableAllHeaderCode = 1 
     xhtml_cleaning = 0 
     admPanel = 0 
     debug = 1 
     no_cache = 1 
     tx_realurl_enable = 0 
     additionalHeaders = Content-type: application/json 
    } 

    10 < tt_content.list.20.tx_courses_ajax 
} 

Die Steuerung ist, wie dies in einer vereinfachten Version suchen:

class Tx_Kurse_Controller_SeminareController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController { 
    public function calendarAction() { 
     $calenderCgf = '...'; 
     file_put_contents($docroot.'uploads/jquery.fullcalendar-mini.js', $calenderCgf); 
    } 

    /** 
    * @return void 
    */ 
    public function getEventAction() { 
     $requestParams = $this->request->getArguments(); 

     print_r($requestParams); 
    } 

    /** 
    * @param string $start Y-M-D H:i:s 
    * @param string $end Y-M-D H:i:s 
    * 
    * @return string $seminarText 
    */ 
    public function getEventsAction($start, $end) { 
     $start = new DateTime($start); 
     $end = new DateTime($end); 
     $seminars = $this->seminarsRepository->findEventsInPeriod($start, $end); 
     $requestParams = $this->request->getArguments(); 

     print_r($requestParams); 
    } 

    /** 
    * @param int $seminar 
    * @return void 
    */ 
    public function bindingAction($seminar) { 
     $seminars = $this->seminareRepository->findByUid($seminar); 
     $this->view->assign('seminars', $seminars); 
    } 
} 

Die ursprüngliche Anfrage-URL ist:

Index. php? id = 176 & no_cache = 1 & tx_courses_calendar [Controller] = Seminare & tx_courses_calendar [Aktion] = Bindung & tx_courses_calendar [Start] = 2017.01.01% 2000: 00: 00 & tx_courses_calendar [Ende] = 2017.12.30% 2023: 59: 59 & type = 1337

I nur bekommen als Anfrageergebnis im Debug-Modus:

<!-- Parsetime: 42ms --> 

so scheint es, dass die typoscript Definition funktioniert, aber etwas scheint falsch zu sein :(

UPDATE: ich habe die Lösung gefunden habe:

Muss entfernt werden, weil es nicht dasselbe wie in Version 4 tut (und es ist auch nicht mehr notwendig) und danach habe ich eine Antwort mit einer Fehlermeldung erhalten. Die Nachricht besagt, dass die gewünschten Aktionen für diesen Controller nicht verfügbar sind. Danach habe ich tiefer gegraben und der Extension-Name muss in Großbuchstaben für den ersten Buchstaben konfiguriert werden, sonst wird es nicht funktionieren.

+0

Ich habe die Lösung von mir selbst gefunden und die Lösung auf den Grund meines ersten Beitrags hinzugefügt :) – oVi

Antwort

0

Nur durch Raten, aber vielleicht fehlt die vendorName in der Konfiguration.

+0

Ich habe dieses Attribut hinzugefügt, aber es ist nicht das Problem :( – oVi

Verwandte Themen