Typo3 键入3 10在自己的扩展中使用快捷方式
我想在TYPO3的CE快捷方式中显示我自己的扩展名 “我的扩展”按钮显示在listview下的“作为”按钮。我可以选择一个条目并保存它。但我无法访问前端中选定的id 到目前为止,我尝试的是: 我在Typo3 键入3 10在自己的扩展中使用快捷方式,typo3,typoscript,typo3-9.x,typo3-10.x,Typo3,Typoscript,Typo3 9.x,Typo3 10.x,我想在TYPO3的CE快捷方式中显示我自己的扩展名 “我的扩展”按钮显示在listview下的“作为”按钮。我可以选择一个条目并保存它。但我无法访问前端中选定的id 到目前为止,我尝试的是: 我在/Configuration/TCA/Overrides/tt_content.php中添加了方法addToInsertRecords。因此,选择条目的按钮显示在后端 defined('TYPO3_MODE')或die(); 调用用户函数(函数(){ \TYPO3\CMS\Core\Utility\Ex
/Configuration/TCA/Overrides/tt_content.php
中添加了方法addToInsertRecords
。因此,选择条目的按钮显示在后端
defined('TYPO3_MODE')或die();
调用用户函数(函数(){
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToInsertRecords('tx\u eislist\u domain\u model\u eis');
});
要在前端显示打印脚本,请执行以下操作:
tt_content.shortcut.20.tables := addToList(tx_eislist_domain_model_eis)
tt_content.shortcut.20.conf.tx_eislist_domain_model_eis = USER
tt_content.shortcut.20.conf.tx_eislist_domain_model_eis {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = EisList
pluginName = Eis
vendorName = Emma
controller = Eisbar
action = show
switchableControllerActions {
Eisbar {
1 = show
}
}
settings =< plugin.tx_eislist_eis.settings
settings {
insertRecord = 1
useStdWrap = singleRecords
displayMode = single
singleRecords.field = uid
}
}
tt_content.shortcut.variables.shortcuts.tables := addToList(tx_eislist_domain_model_eis)
tt_content.shortcut.variables.shortcuts.conf.tx_eislist_domain_model_eis < tt_content.shortcut.20.conf.tx_eislist_domain_model_eis
我可以通过打字脚本访问变量。但是我得到字符串“field”=>“uid”。而不是所选的值ID。我认为您需要插入configurationManager,以便从/在安装键入脚本文件中获取stdWrap功能。只需在控制器中使用configurationManager变量和injectFunction,其中包含显示操作:
/**
* @var \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
*/
protected $configurationManager;
/**
* Injects the Configuration Manager and is initializing the framework settings
*
* @param \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface $configurationManager Instance of the
* Configuration Manager
*/
public function injectConfigurationManager(
\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface $configurationManager
) {
$this->configurationManager = $configurationManager;
$originalSettings = $this->configurationManager->getConfiguration(
\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS
);
// Use stdWrap for given defined settings
if (isset($originalSettings['useStdWrap']) && !empty($originalSettings['useStdWrap'])) {
$typoScriptService = GeneralUtility::makeInstance(TypoScriptService::class);
$typoScriptArray = $typoScriptService->convertPlainArrayToTypoScriptArray($originalSettings);
$stdWrapProperties = GeneralUtility::trimExplode(',', $originalSettings['useStdWrap'], true);
foreach ($stdWrapProperties as $key) {
if (is_array($typoScriptArray[$key . '.'])) {
$originalSettings[$key] = $this->configurationManager->getContentObject()->stdWrap(
$typoScriptArray[$key],
$typoScriptArray[$key . '.']
);
}
}
}
$this->settings = $originalSettings;
}
我认为您需要注入configurationManager,以便从/在安装打字脚本文件中获取stdWrap功能。只需在控制器中使用configurationManager变量和injectFunction,其中包含显示操作:
/**
* @var \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
*/
protected $configurationManager;
/**
* Injects the Configuration Manager and is initializing the framework settings
*
* @param \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface $configurationManager Instance of the
* Configuration Manager
*/
public function injectConfigurationManager(
\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface $configurationManager
) {
$this->configurationManager = $configurationManager;
$originalSettings = $this->configurationManager->getConfiguration(
\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS
);
// Use stdWrap for given defined settings
if (isset($originalSettings['useStdWrap']) && !empty($originalSettings['useStdWrap'])) {
$typoScriptService = GeneralUtility::makeInstance(TypoScriptService::class);
$typoScriptArray = $typoScriptService->convertPlainArrayToTypoScriptArray($originalSettings);
$stdWrapProperties = GeneralUtility::trimExplode(',', $originalSettings['useStdWrap'], true);
foreach ($stdWrapProperties as $key) {
if (is_array($typoScriptArray[$key . '.'])) {
$originalSettings[$key] = $this->configurationManager->getContentObject()->stdWrap(
$typoScriptArray[$key],
$typoScriptArray[$key . '.']
);
}
}
}
$this->settings = $originalSettings;
}