Zum Inhalt springen

Plugin Seite per FlexForms steuern

Erstellt am 9. April 2015 · 2 Antworten · letzte Antwort am 11. April 2015

Tags: Fluid, Frage

JulianS ·

Hallo allerseits,

nachdem ich mich schon durch etliche Posts und Tutorials gearbeitet habe, dachte ich mir fragste mal 😉

Also:

Ich habe eine Extension geschriebn welche zwei repositories besitzt.

Einmal Fahrzeug, einmal Geraet.

Entsprechend zwei Controller, Templates etc.

So nun möchte ich gerne beim Erstellen einer Seite im Backend, nach auswahl meines Plugins die Möglichkeit haben mir entweder Fahrzeug oder Geraet auf dieser Seite auszugeben (list). Default ist es immer Fahrzeug.

Die Lösung dieses Problems scheint wohl FlexForm zu sein.

Meine ext_table.php sieht wie folgt aus:

<?php
if (!defined('TYPO3_MODE')) {
	die('Access denied.');
}

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
	$_EXTKEY,
	'Fuhrpark',
	'Fuhrpark'
);

if (TYPO3_MODE === 'BE') {

	/**
	 * Registers a Backend Module
	 */
	\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
		'Furhrpark.' . $_EXTKEY,
		'user',	 // Make module a submodule of 'user'
		'fuhrpark',	// Submodule key
		'',						// Position
		array(
			'Backend' => 'index','Fahrzeug' => 'list, show, new, create, edit, update, delete','Geraet' => 'list, show, new, create, edit, update, delete',
		),
		array(
			'access' => 'user,group',
			'icon'   => 'EXT:' . $_EXTKEY . '/ext_icon.gif',
			'labels' => 'LLL:EXT:' . $_EXTKEY . '/Resources/Private/Language/locallang_fuhrpark.xlf',
		)
	);

}

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'Fuhrpark');

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_fuhrpark_domain_model_fahrzeug', 'EXT:fuhrpark/Resources/Private/Language/locallang_csh_tx_fuhrpark_domain_model_fahrzeug.xlf');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_fuhrpark_domain_model_fahrzeug');
$GLOBALS['TCA']['tx_fuhrpark_domain_model_fahrzeug'] = array(
	'ctrl' => array(
		'title'	=> 'LLL:EXT:fuhrpark/Resources/Private/Language/locallang_db.xlf:tx_fuhrpark_domain_model_fahrzeug',
		'label' => 'bild',
		'tstamp' => 'tstamp',
		'crdate' => 'crdate',
		'cruser_id' => 'cruser_id',
		'dividers2tabs' => TRUE,

		'versioningWS' => 2,
		'versioning_followPages' => TRUE,

		'languageField' => 'sys_language_uid',
		'transOrigPointerField' => 'l10n_parent',
		'transOrigDiffSourceField' => 'l10n_diffsource',
		'delete' => 'deleted',
		'enablecolumns' => array(
			'disabled' => 'hidden',
			'starttime' => 'starttime',
			'endtime' => 'endtime',
		),
		'searchFields' => 'bild,name,kennzeichen,typ,einsatzmittel,geraete,',
		'dynamicConfigFile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Configuration/TCA/Fahrzeug.php',
		'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($_EXTKEY) . 'Resources/Public/Icons/tx_fuhrpark_domain_model_fahrzeug.gif'
	),
);

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_fuhrpark_domain_model_geraet', 'EXT:fuhrpark/Resources/Private/Language/locallang_csh_tx_fuhrpark_domain_model_geraet.xlf');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_fuhrpark_domain_model_geraet');
$GLOBALS['TCA']['tx_fuhrpark_domain_model_geraet'] = array(
	'ctrl' => array(
		'title'	=> 'LLL:EXT:fuhrpark/Resources/Private/Language/locallang_db.xlf:tx_fuhrpark_domain_model_geraet',
		'label' => 'bild',
		'tstamp' => 'tstamp',
		'crdate' => 'crdate',
		'cruser_id' => 'cruser_id',
		'dividers2tabs' => TRUE,

		'versioningWS' => 2,
		'versioning_followPages' => TRUE,

		'languageField' => 'sys_language_uid',
		'transOrigPointerField' => 'l10n_parent',
		'transOrigDiffSourceField' => 'l10n_diffsource',
		'delete' => 'deleted',
		'enablecolumns' => array(
			'disabled' => 'hidden',
			'starttime' => 'starttime',
			'endtime' => 'endtime',
		),
		'searchFields' => 'bild,name,nr,wartung,bedienungsanleitung,funktionskontrolle,fahrzeug,',
		'dynamicConfigFile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Configuration/TCA/Geraet.php',
		'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($_EXTKEY) . 'Resources/Public/Icons/tx_fuhrpark_domain_model_geraet.gif'
	),
);

$extensionName = t3lib_div::underscoredToUpperCamelCase($_EXTKEY);
$pluginSignature = strtolower($extensionName) . '_fuhrpark';
$TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:' . $_EXTKEY . '/Configuration/FlexForms/switchForm.xml');

Die switchForm.xml ist die folgende:

<?xml version="1.0" encoding="UTF-8"?>
<T3DataStructure>
    <sheets>
        <general>
            <ROOT>
                <TCEforms>
                    <sheetTitle>Allgemeine Einstellungen</sheetTitle>
                </TCEforms>
                <type>array</type>
                <el>
                    <switchableControllerActions>
                        <TCEforms>
                            <label>Ansicht</label>
                            <onChange>reload</onChange>
                            <config>
                                <type>select</type>
                                <items type="array">
                                    <numIndex index="1" type="array">
                                        <numIndex index="0">GeraeteAnsicht</numIndex>
                                        <numIndex index="1">Geraet->list</numIndex>
                                    </numIndex>
                                    <numIndex index="2" type="array">
                                        <numIndex index="0">FahrzeugAnsicht</numIndex>
                                        <numIndex index="1">Fahrzeug->list</numIndex>
                                    </numIndex>
                                </items>
                            </config>
                        </TCEforms>
                    </switchableControllerActions>
                </el>
            </ROOT>
        </general>
    </sheets>
</T3DataStructure>

ext_localconfig:

<?php
if (!defined('TYPO3_MODE')) {
	die('Access denied.');
}

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
	'Furhrpark.' . $_EXTKEY,
	'Fuhrpark',
	array(
		'Fahrzeug' => 'list, show, new, create, edit, update, delete',
		'Geraet' => 'list, show, new, create, edit, update, delete',
        'Backend' => 'index',
		
	),
	// non-cacheable actions
	array(
		'Fahrzeug' => 'create, update, delete',
		'Geraet' => 'create, update, delete',
		
	)
);

Jetzt hätte ich gedacht, das ich nach dem Erstellen einer Seite auf "Seiteninhalt auf Seite .... bearbeiten" unter Plug-In mein Plugin auswähle und ein weiterer Reiter erscheint wo ich den Controller den ich in der XML Datei definiert habe auswählen kann.

Das ist leider nicht der Fall und ich habe keine Idee mehr woran das liegen kann.

Ich hoffe Ihr könnt mir helfen.

Vielen Dank im Voraus.

toifel ·

$GLOBALS['TCA']['tx_fuhrpark_domain_model_fahrzeug']['types']['1']['showitem'] muss pi_flexform enthalten, damit die FlexForm im Backend angezeigt wird.

JulianS · · Beste Antwort

Danke für die Antwort aber ich hatte lediglich einen Tippfehler beim Pfad (halber Tag wegen soetwas...)

das pi_flexform auf $GLOBALS['TCA']['tx_fuhrpark_domain_model_fahrzeug']['types']['1']['showitem'] war an dieser Stelle nicht nötig.