2015-06-15 14 views

risposta

3

Il metodo precedente funziona solo in controller o classe di servizi prova sotto funzionerà in qualsiasi file PHP in Extension.

$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\Extbase\\Object\\ObjectManager'); 
$configurationManager = $objectManager->get('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager'); 
$extbaseFrameworkConfiguration = $configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT); 
$storagePid = $extbaseFrameworkConfiguration['plugin.']['tx_guesthouse_guesthouse.']['settings.']['storagePid']; 
6

È possibile aggiungere sotto la riga nel controller.

$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');  
$configurationManager = $objectManager->get('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager'); 
$setting = $configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS); 
$ts_config = $setting['plugin.']['tx_xxxx.']['settings.']['storagePid']; 

Penso che sarà utile a voi. Puoi anche usare queste impostazioni typo3 anche nei file di servizio.

+3

Penso che questo sia eccessivamente complicato. In un contesto extbase, è possibile consentire al framework di iniettarvi direttamente un ConfigurationManager. Quindi è possibile utilizzare '$ settings = $ configurationManager-> getConfiguration (\ TYPO3 \ CMS \ Extbase \ Configuration \ ConfigurationManagerInterface :: CONFIGURATION_TYPE_SETTINGS);', non è necessario il TS completo. – Jost

+0

@Jost Sì, ho corretto la mia risposta. –

3

Solo per TYPO3 backend

per il multi radice impostare dominio prima di ottenere la configurazione

$configurationManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Configuration\\BackendConfigurationManager'); 
$configurationManager->currentPageId = ROOT_PID_OF_YOUR_DOMAIN; 
$extbaseFrameworkConfiguration = $configurationManager->getTypoScriptSetup(); 

//Following will be resultant array, find your required stuff from it 
print_r($extbaseFrameworkConfiguration); 

Nota: Non dimenticate di estendere la classe con \TYPO3\CMS\Extbase\Configuration\BackendConfigurationManager in ordine per ottenere l'accesso per cui è protetta variabili

-3
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');  
$configurationManager = $objectManager->get('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager'); 
$setting = $configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS); 
$ts_config = $setting['plugin.']['tx_xxxx.']['settings.']['storagePid']; 
+0

Una buona risposta avrà sempre una spiegazione di cosa è stato fatto e perché è stato fatto in questo modo, non solo per l'OP ma per i futuri visitatori di SO. Per favore aggiungi qualche descrizione per far capire agli altri. :) –

+0

copia della risposta di Vishal Tanna –

0

Ora, in TYPO3 8.X, currentPageId è protetto così, non siamo riusciti a impostare direttamente, e non ci sarebbe stato alcun metodo set definito nella classe principale. Di seguito è riportato il codice corretto in base alla nuova versione che potrebbe essere di aiuto. Grazie per la direzione corretta.

$configurationManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Configuration\\BackendConfigurationManager'); 
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($configurationManager); 
$configurationManager->getDefaultBackendStoragePid(); 
$extbaseFrameworkConfiguration = $configurationManager->getTypoScriptSetup(); 

//Following will be resultant array, find your required stuff from it 
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($extbaseFrameworkConfiguration);