Php TYPO3 ajax 404 eID未注册
我有打字错误37.6.18。我正在尝试在前端配置ajax请求。我需要我的ajax请求调用我需要的特定插件控制器和操作。我试过不同的ajaxDispatchers 现在我得到错误404 eID未注册 我将ajaxDispatcher包含在local_conf.php中Php TYPO3 ajax 404 eID未注册,php,jquery,ajax,typo3,Php,Jquery,Ajax,Typo3,我有打字错误37.6.18。我正在尝试在前端配置ajax请求。我需要我的ajax请求调用我需要的特定插件控制器和操作。我试过不同的ajaxDispatchers 现在我得到错误404 eID未注册 我将ajaxDispatcher包含在local_conf.php中 $GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include']['Fefiles'] = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::ex
$GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include']['Fefiles'] = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('fefiles').'Classes/Ajax/EidDispatcher.php';
EidDispatcher.php
<?
use \TYPO3\CMS\Core\Core\Bootstrap;
use \TYPO3\CMS\Core\Utility\ArrayUtility;
use \TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use \TYPO3\CMS\Core\Utility\GeneralUtility;
use \TYPO3\CMS\Frontend\Utility\EidUtility;/**/
/**
* Gets the Ajax Call Parameters
*/
$_gp = \TYPO3\CMS\Core\Utility\GeneralUtility::_POST();
$_gp = \TYPO3\CMS\Extbase\Utility\ArrayUtility::arrayMergeRecursiveOverrule(
$_gp,
\TYPO3\CMS\Core\Utility\GeneralUtility::_GET()
);
$ajax = array();
$ajax['arguments'] = $_gp;
$ajax['vendor'] = 'Nng';
$ajax['extensionName'] = 'Nnfesubmit';
$ajax['pluginName'] = 'Pi1';
$ajax['controller'] = 'Eid';
$ajax['action'] = 'processRequest';
/**
* @var $TSFE \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController
*/
global $TYPO3_CONF_VARS;
$TSFE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController', $TYPO3_CONF_VARS, 0, 0);
$GLOBALS['TSFE'] = $TSFE;
\TYPO3\CMS\Frontend\Utility\EidUtility::initLanguage();
\TYPO3\CMS\Frontend\Utility\EidUtility::initTCA();
// Get FE User Information
$TSFE->initFEuser();
$TSFE->initUserGroups();
// Important: no Cache for Ajax stuff
$TSFE->set_no_cache();
$TSFE->checkAlternativeIdMethods();
$TSFE->determineId();
$TSFE->initTemplate();
$TSFE->getConfigArray();
\TYPO3\CMS\Core\Core\Bootstrap::getInstance();
$TSFE->cObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer');
$TSFE->settingLanguage();
$TSFE->settingLocale();
/**
* Initialize Backend-User (if logged in)
*/
$GLOBALS['BE_USER'] = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\Authentication\BackendUserAuthentication');
$GLOBALS['BE_USER']->start();
/**
* Initialize Database
*/
$TSFE->connectToDB();
/**
* @var $objectManager \TYPO3\CMS\Extbase\Object\ObjectManager
*/
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
/**
* Initialize Extbase bootstap
*/
$bootstrapConf['extensionName'] = $ajax['extensionName'];
$bootstrapConf['pluginName'] = $ajax['pluginName'];
$bootstrap = new \TYPO3\CMS\Extbase\Core\Bootstrap();
$bootstrap->initialize($bootstrapConf);
$bootstrap->cObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer');
/**
* Build the request
*/
$request = $objectManager->get('TYPO3\CMS\Extbase\Mvc\Request');
$request->setControllerVendorName($ajax['vendor']);
$request->setcontrollerExtensionName($ajax['extensionName']);
$request->setPluginName($ajax['pluginName']);
$request->setControllerName($ajax['controller']);
$request->setControllerActionName($ajax['action']);
$request->setArguments($ajax['arguments']);
//$ajaxDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('Nng\Nnsubscribe\Controller\EidController');
//echo $ajaxDispatcher->processRequestAction();
$response = $objectManager->get('TYPO3\CMS\Extbase\Mvc\ResponseInterface');
$dispatcher = $objectManager->get('TYPO3\CMS\Extbase\Mvc\Dispatcher');
$dispatcher->dispatch($request, $response);
echo $response->getContent();
?>
我认为它不仅对我有用,对其他用户也有用。各位,请帮我解决这个问题,并了解这是什么。非常感谢你的建议 $GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include']['ajaxDispatcher']
['ajaxDispatcher']此处必须与您在eID中发送的内容相同)$GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include']['ajaxDispatcher']
['ajaxDispatcher']此处必须与您在eID中发送的内容相同)您的eID必须在url中设置,而不是在post数据中设置。 请求应为: var请求={ id:1, mvc:{ 供应商:“Istar”, 扩展名:“Fefiles”, pluginName:‘Piphoto’, 控制员:'照片', 行动:“测试” },
};
$.ajax({
type: "POST",
url: "index.php?eID=Fefiles",
data: {
request: request
},
success: function(msg){
console.log(msg);
}
});
您的eID必须在url中设置,而不是在post数据中设置。 请求应为: var请求={ id:1, mvc:{ 供应商:“Istar”, 扩展名:“Fefiles”, pluginName:‘Piphoto’, 控制员:'照片', 行动:“测试” },
};
$.ajax({
type: "POST",
url: "index.php?eID=Fefiles",
data: {
request: request
},
success: function(msg){
console.log(msg);
}
});
使用ExtBASE时,请考虑使用页面类型而不是EID。请参阅此博客文章:
在使用ExtBASE时请考虑使用页面类型而不是EID。请参阅此博客文章: