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