[Frage] Extension mithilfe des Extensionbuilder erweitern [Gelöst]

  • HH HH
    Jedi-Meister
    0 x
    347 Beiträge
    0 Hilfreiche Beiträge
    14. 12. 2014, 14:11

    Hallo,
    ich möchte eine eigene Testextension durch eine andere Extension erweitern. Das ganze unter typo3 6.2.8

    1. neue Etxension mit dem Extension builder erstellen (vendor: TEST, extension key: mytest1)
    2. Neue Tabelle erstellen "table1"
    3. neue Eigenschaft in table1 mit Name "title1"
    4. speichern
    5. Installieren

    Im Backend kann ich jetzt einen einene Datensatz erstellen und title1 eingeben

    Jetzt möchte ich gerne meine Extension mytest1 erweitern und zwar mit einer weiteren Extension mytest2.

    6. ich erstelle wieder eine Extension (vendor: TEST, extension key: mytest2)
    7. Estelle eine Tabelle "table1"
    8. gebe im Feld "Extend existing model class" meine Klasse ein "\TEST\Mytest1\Domain\Model\Table1"
    9. Erstelle eine Eigenschaft "title2"
    10. Speicher das Ganze
    11. Installiere die Extension

    Schau ich mir die Tabelle der Extension mytest1 an (mit phpmyadmin) sehe ich das dieser Extension ein Feld title2 hinzugefügt wurde.

    Lege ich im Backend einen Datensatz mytest1 an wird leider das feld title2 nicht angezeigt.

    Der Extension Builder generiert mir diese Datei.

    1. <?php
    2. if (!defined('TYPO3_MODE')) {
    3. die('Access denied.');
    4. }
    5.  
    6. \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'mytest2');
    7.  
    8. if (!isset($GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['type'])) {
    9. if (file_exists($GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['dynamicConfigFile'])) {
    10. require_once($GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['dynamicConfigFile']);
    11. }
    12. // no type field defined, so we define it here. This will only happen the first time the extension is installed!!
    13. $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['type'] = 'tx_extbase_type';
    14. $tempColumns = array();
    15. $tempColumns[$GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['type']] = array(
    16. 'exclude' => 1,
    17. 'label' => 'LLL:EXT:mytest2/Resources/Private/Language/locallang_db.xlf:tx_mytest2.tx_extbase_type',
    18. 'config' => array(
    19. 'type' => 'select',
    20. 'items' => array(),
    21. 'size' => 1,
    22. 'maxitems' => 1,
    23. )
    24. );
    25. \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tx_mytest1_domain_model_table1', $tempColumns, 1);
    26. }
    27.  
    28. $tmp_mytest2_columns = array(
    29.  
    30. 'title2' => array(
    31. 'exclude' => 1,
    32. 'label' => 'LLL:EXT:mytest2/Resources/Private/Language/locallang_db.xlf:tx_mytest2_domain_model_table1.title2',
    33. 'config' => array(
    34. 'type' => 'input',
    35. 'size' => 30,
    36. 'eval' => 'trim'
    37. ),
    38. ),
    39. );
    40.  
    41. \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tx_mytest1_domain_model_table1',$tmp_mytest2_columns);
    42.  
    43. $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['types']['Tx_Mytest2_Table1']['showitem'] = $TCA['tx_mytest1_domain_model_table1']['types']['1']['showitem'];
    44. $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['types']['Tx_Mytest2_Table1']['showitem'] .= ',--div--;LLL:EXT:mytest2/Resources/Private/Language/locallang_db.xlf:tx_mytest2_domain_model_table1,';
    45. $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['types']['Tx_Mytest2_Table1']['showitem'] .= 'title2';
    46.  
    47. $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['columns'][$TCA['tx_mytest1_domain_model_table1']['ctrl']['type']]['config']['items'][] = array('LLL:EXT:mytest2/Resources/Private/Language/locallang_db.xlf:tx_mytest1_domain_model_table1.tx_extbase_type.Tx_Mytest2_Table1','Tx_Mytest2_Table1');
    48.  
    49. \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_mytest1_domain_model_table1', $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['type'],'','after:' . $TCA['tx_mytest1_domain_model_table1']['ctrl']['label']);

    Der Extesnionbuilder fügt bereits ein addToAllTCAtypes hinzu, trotzdem seh ich nichts im Backend.
    Der TCA wird aus irgendeinem Grund nicht erweitert.
    Ich habe das ganze aus einem englisch Sprachigen Forum, dort wird darauf hingewiesen, dass wenn man den Eintrag "after:....." komplett löscht das ganze funktionieren sollte. Machts leider nicht.
    Bin für jeden Tipp dankbar!!!!

  • HH HH
    Jedi-Meister
    0 x
    347 Beiträge
    0 Hilfreiche Beiträge
    24. 01. 2015, 21:46 - Lösung

    so, habs hinbekommen,
    an alle die mal auf ein ähnliches Problem stoßen:

    1. Fehler: Ich hatte vergessen (im Extensionbuilder) bei Map to existing Table, die Tabelle anzugeben (tx_mytest1_domain_model_table1)
    2. Fehler: ich hatte vergessen bei "Abhängig von" meine mytest1 extesnion einzutragen (entweder man nutzt den extension builder oder in der ext_emconf.php 'depends' => array('typo3' => '6.2', 'mytest1' => '0.0', eintragen)
    3. Fehler (mal außnahmweise nicht von mir, da macht der Extensionbuilder irgendwas komisches. In die letzte Zeile der ext_tables.php abändern: \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_mytest1_domain_model_table1', 'title2','','after:title1');
    4. Extensions deinstallieren cache leeren wieder installieren, erst dann werden die Änderungen übernommen.

    Jetzt funkionierts aber, genau wie erwartet!
    Danke nochmals an ALLE!