将Typo3从版本4.x升级到7.x后,Ajax端点不再工作

时间:2017-11-30 10:17:37

标签: ajax typo3 upgrade typoscript endpoint

我已将Typo3从版本4升级到版本7且ajax端点不再有效,是否有人知道在typoscript中使用简单的ajax端点定义是否存在未记录的更改? 或者现在请求的URL是不同的吗?

原始定义如下:

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
}

控制器看起来像是这样的简化版本:

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);
   }
}

原始请求网址为:

的index.php ID = 176&安培; no_cache = 1&安培; tx_courses_calendar [控制器] =研讨会和安培; tx_courses_calendar [动作] =结合&安培; tx_courses_calendar [开始] = 2017年1月1日%2000:00:00&安培; tx_courses_calendar [结束] = 2017年12月30日2023%:59:59&安培;类型= 1337

我只在调试模式下获得请求结果:

<!-- Parsetime: 42ms -->

所以看来typoscript定义是有效的,但似乎有些错误:(

更新:我找到了解决方案:

10 < tt_content.list.20.tx_courses_ajax

必须删除,因为它与版本4不一样(并且它也不再需要),之后我收到了带有错误消息的回复。该消息表示所需操作不适用于此控制器。 之后,我深入挖掘,扩展名称必须以大写形式配置为第一个字母,否则它将无法正常工作。

0 个答案:

没有答案