私はTYPO3 7.6.18を持っています。フロントエンドでajaxリクエストを設定しようとしています。私は必要なときに、私のAjaxリクエストが特定のプラグインコントローラとアクションを呼び出す必要があります。私は別のajaxDispatcherを試しました。TYPO3 ajax 404 eID登録されていません
var request = {
id: 1,
mvc: {
vendor: 'Istar',
extensionName: 'Fefiles',
pluginName: 'Piphoto',
controller: 'Photo',
action: 'test'
},
};
$.ajax({
type: "POST",
url: "index.php",
data: {
eID: 'Fefiles',
request: request
},
success: function(msg){
console.log(msg);
}
});
:今
私はlocal_conf.php
$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();
?>
私のjsの要求にajaxDispatcherが含まエラー404のeIDが
を登録していない取得します私はそれが私にとってだけでなく、他のユーザーにとっても役立つと思います。この問題を解決し、このeIDが何であるかを理解してください。素晴らしいアドバイスありがとう!