Typo3 8.7.10 Действия переключаемого контроллера не работают

Изучив примеры, я попытался создать переключаемое действие управления для моего плагина расширения, но оно не отображается. Может ли кто-нибудь помочь мне понять, почему?

В моем ext_localconf.php у меня есть следующее:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'myeventplugin',
        'Pi1',
        [
            'Events' => 'list, display'
        ],
        // non-cacheable actions
        [
            'Events' => 'list, display'
        ]
    );

В моем ext_tables.php у меня есть следующее:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
        'myeventplugin',
        'Pi1',
        'Events'
);  

$pluginSignature = 'myeventplugin_Pi1';

$TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:myeventplugin/Configuration/FlexForms/flexform_pi1.xml');

В моей конфигурации/FlexForms/flexform_pi1.xml у меня есть следующее:

<?xml version="1.0" encoding="UTF-8"?>
<T3DataStructure>
<sheets>
    <sDEF>
        <ROOT>
            <TCEforms>
                <sheetTitle>Events Plugin Config</sheetTitle>
            </TCEforms>
            <type>
                array
            </type>
            <el>
                <switchableControllerActions>
                    <TCEforms>
                        <label>View</label>
                        <onChange>reload</onChange>
                        <config>
                            <type>select</type>
                            <renderType>selectSingle</renderType>
                            <items type="array">
                                <numIndex index="0" type="array">
                                    <numIndex index="0">Event List</numIndex>
                                    <numIndex index="1">Events->list</numIndex>
                                </numIndex> 
                                <numIndex index="1" type="array">
                                    <numIndex index="0">Event Display</numIndex>
                                    <numIndex index="1">Events->display</numIndex>
                                </numIndex>               
                            </items>
                        </config>
                    </TCEforms>
                </switchableControllerActions>
            </el>
        </ROOT>
    </sDEF>
</sheets>
</T3DataStructure>

Когда я включаю плагин, я не вижу созданное мной дополнительное меню выбора, поэтому я не могу указать, какое действие я хочу, чтобы оно вызывало.

Я подумал, что, возможно, переменная $pluginSignature была неправильной из-за регистра. Поэтому в ext_tables.php пробовали следующее:

 $extensionName = strtolower(\TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($_EXTKEY));
 $pluginSignature = $extensionName.'_'.'Pi1';

а также

 $extensionName = strtolower(\TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($_EXTKEY));
 $pluginSignature = $extensionName.'_'.'pi1'; 

а также

 $pluginSignature = 'myeventplugin_Pi1';       

а также

 $pluginSignature = 'myeventplugin_pi1';

... но все равно не повезло


person James    schedule 11.10.2018    source источник


Ответы (1)


Я смотрю в своем последнем расширении: в ext_tables.php я написал

    $extensionName = strtolower(\TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($extKey));
    $pluginName = strtolower('plg');
    $pluginSignature = $extensionName.'_'.$pluginName;

Итак, в моем случае $pluginSignature = 'thoffer_plg', в вашем случае это должно быть 'myeventplugin_pi1'.

Следующие строки:

            $GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist'][$pluginSignature] = 'layout,select_key,pages,recursive';
            $GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
            \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:'.$extKey . '/Configuration/FlexForms/contentPlugin.xml');

Это функционально для меня, в вашем случае это выглядит нормально. Лучший способ — переустановить расширение, если вы меняете значения для flexforms, потому что обычно это глубоко кэшируется.

person goerch    schedule 11.10.2018
comment
ДА!!! @goerch большое спасибо. Ключевой проблемой была строка $GLOBALS['TCA']. Во всех других примерах использовалась $TCA, которая, похоже, не работает в этой версии T3. Интересно также отметить, что переменная $extKey пуста в ext_tables.php, поэтому мне пришлось написать имя расширения вручную, все в нижнем регистре. Спасибо еще раз! - person James; 12.10.2018