2017-05-13 7 views
1

私は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が何であるかを理解してください。素晴らしいアドバイスありがとう!

答えて

0

$ GLOBALS [ 'TYPO3_CONF_VARS']あなたがのeIDに送るよう[ 'FE'] [ 'eID_include'] [ 'ajaxDispatcher']

[ 'ajaxDispatcher']は、ここで同じでなければなりません)

0

eIDは投稿データではなく、URLに設定する必要があります。 要求がなければならない:

VAR要求= { 番号:1、 MVC:{ ベンダー 'ISTAR' がextensionName: 'Fefiles' pluginName 'Piphoto' コントローラ '写真' 、 アクション: '試験' }、

}; 

    $.ajax({ 
     type: "POST", 
     url: "index.php?eID=Fefiles", 
     data: { 
      request: request 
     }, 
     success: function(msg){ 
      console.log(msg); 
     } 
    }); 
関連する問題