[Frage] Datensätze dynamisch erstellen TYPO3-Version: 6.2.7

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    15. 12. 2014, 09:32

    Hallo,

    ich habe die News Extension (tx_news) um einige Felder erweitert, was soweit auch sehr gut funktiniert hat.

    Nun stoße ich aber auf ein Problem. Zusätzlich benötigte Felder sind von Datensatz zu Datensatz unterschiedlich. Somit kann ich die zusätzlichen Felder nicht statisch bezeichnen. Auch werden mal mehr und mal weniger benötigt.

    Mir schwebt vor (wie z.B bei Powermail die Input-Felder) dynamisch hinzuzufügen. Somit könnte ich Label und Werte einzeln selbst bestimmen. Auch die Menge zusätzliche Felder wären frei.

    Das ganze siehtr im Backend wie im Screenshot aus.

    Kann mir jemand ein Tutorial, Quellen oder vieleicht sogar einen Quick&Dirty geben?

    Vielen Dank und Gruß,

    D.

    Anhänge (1)
    ds.jpg image/jpeg 0,00 B 140 heruntergeladen

  • 1
  • toifel toifel
    Jedi-Ratsmitglied
    0 x
    831 Beiträge
    96 Hilfreiche Beiträge
    15. 12. 2014, 10:01

    Das Stichwort dazu lautet "IRRE" - damit wurden auch die Felder in deinem Screenshot umgesetzt.
    http://wiki.typo3.org/Inline_Relational_Record_Editing#Functionality_of_Inline_Relational_Record_Editing

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    15. 12. 2014, 10:44

    Aha Danke,

    leider stecke ich da noch garnicht drin. Gibts eventuell ein einfaches Beispiel, ein Tutorial oder was in deutscher Sprache?

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    15. 12. 2014, 12:58

    Hallo nochmal,

    ich bin tatsächlich so weit gekommen, dass ich ein funktionierendes Beispiel sehen konnte. Dieses zielte aber darauf ab, für die Tabelle tt_content über IRRE weitere Datensätze hinzuzufügen.
    Ich habe also analog eine separate Tabelle erstellt.

    Zunächst das funktionierende Beispiel:

    1. CREATE TABLE tx_meineExtension_domain_model_artikel (
    2. inhalt int(11) unsigned DEFAULT '0',
    3. );
    4.  
    5. CREATE TABLE tt_content (
    6. artikel int(11) unsigned DEFAULT '0' NOT NULL
    7. );

    1. [...]
    2. 'inhalt' => array(
    3. 'exclude' => 0,
    4. 'label' => 'Inhalte',
    5. 'config' => array(
    6. 'type' => 'inline',
    7. 'foreign_table' => 'tt_content',
    8. 'foreign_field' => 'artikel',
    9. 'maxitems' => 9999,
    10. 'appearance' => array(
    11. 'collapse' => 0,
    12. 'levelLinksPosition' => 'top',
    13. 'showSynchronizationLink' => 1,
    14. 'showPossibleLocalizationRecords' => 1,
    15. 'showAllLocalizationLink' => 1
    16. ),
    17. ),
    18. ),
    19. [...]

    Für mein folgendes Beispiel wird aber nichts angezeigt. Es wird doch nur eine andere Tabelle angegeben. Habe ich noch was vergessen?

    1. CREATE TABLE tx_newscustom_domain_model_field (
    2. uid int(11) NOT NULL auto_increment,
    3. pid int(11) DEFAULT '0' NOT NULL,
    4. inhalt int(11) unsigned DEFAULT '0',
    5. tstamp int(11) unsigned DEFAULT '0' NOT NULL,
    6. crdate int(11) unsigned DEFAULT '0' NOT NULL,
    7. cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
    8. deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
    9. hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
    10. starttime int(11) unsigned DEFAULT '0' NOT NULL,
    11. endtime int(11) unsigned DEFAULT '0' NOT NULL,
    12. sorting int(10) DEFAULT '0' NOT NULL,
    13.  
    14. t3ver_oid int(11) DEFAULT '0' NOT NULL,
    15. t3ver_id int(11) DEFAULT '0' NOT NULL,
    16. t3ver_wsid int(11) DEFAULT '0' NOT NULL,
    17. t3ver_label varchar(255) DEFAULT '' NOT NULL,
    18. t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
    19. t3ver_stage int(11) DEFAULT '0' NOT NULL,
    20. t3ver_count int(11) DEFAULT '0' NOT NULL,
    21. t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
    22. t3ver_move_id int(11) DEFAULT '0' NOT NULL,
    23. t3_origuid int(11) DEFAULT '0' NOT NULL,
    24.  
    25. sys_language_uid int(11) DEFAULT '0' NOT NULL,
    26. l10n_parent int(11) DEFAULT '0' NOT NULL,
    27. l10n_diffsource mediumblob,
    28.  
    29. inhalt int(11) unsigned DEFAULT '0',
    30.  
    31. PRIMARY KEY (uid),
    32. KEY parent (pid),
    33. KEY t3ver_oid (t3ver_oid,t3ver_wsid),
    34. KEY language (l10n_parent,sys_language_uid)
    35. );

    1. [...]
    2. 'inhalt' => array(
    3. 'exclude' => 0,
    4. 'label' => 'Inhalte',
    5. 'config' => array(
    6. 'type' => 'inline',
    7. 'foreign_table' => 'tx_newscustom_domain_model_field',
    8. 'foreign_field' => 'artikel',
    9. 'maxitems' => 9999,
    10. 'appearance' => array(
    11. 'collapse' => 0,
    12. 'levelLinksPosition' => 'top',
    13. 'showSynchronizationLink' => 1,
    14. 'showPossibleLocalizationRecords' => 1,
    15. 'showAllLocalizationLink' => 1
    16. ),
    17. ),
    18. ),
    19. [...]
    20. \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_news_domain_model_news','inhalt');

  • Schweriner Schwerine...
    Jedi-Ratsmitglied
    0 x
    554 Beiträge
    60 Hilfreiche Beiträge
    15. 12. 2014, 14:58

    Also wenn ich das richtig verstehe und diese Datensätze "tx_newscustom_domain_model_field" als IRRE verwendet werden sollen, dann fehlt in der Tabellenstruktur noch das Feld "artikel" in dem sozusagen das Parent Element gespeichert wird.

    Das Beispiel das Du meinst kommt mir übrigens sehr bekannt vor und es geht nicht darum der Tabelle tt_content IRRE Elemente hinzuzufügen sondern darum, tt_content Elemente selbst als IRRE zu verwenden :P

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    15. 12. 2014, 15:11

    Hallo Leute, ich versuche es nochmal etwas anders beschrieben.

    Ich habe für tx_news einige Felder hinzugefügt, die im TCA registriert sind und ausgefüllt werden können. Im fluid Template werden diese auch ausgegeben.

    Da aber die Menge der zusätzlichen Felder von 1 - über 30 variiert und die Bezeichnung der Felder immer unterschiedlich ist, möchte ich gern IRRE verwenden. So kann ich für jeden einzelnen News-Beitrag ganz einfach 1 oder mehr individuell bezeichnete Feder hinzufügen.

    Leider scheitere ich mit dieser scheinbar einfachen Programmierung, wahrscheinlich im Detail.

    Mein o.G. Versuch funktioniert mit der tt_content Tabelle. Ich möchte aber eine eigene Tabelle verwenden, in der ausschließlich zwei Felder für die Ausgabe wichtig sind.

    1. Label (Bezeichnung der Ausgabe des Wertes)
    2. Wert (die Anzeige der hinterlegten Information)

    Z.B. für die Ausgabe in der News Detail-Ansicht:
    [b]Abmessung L x B x H[/b]: 123 x 23 x 999
    [b]Gewicht[/b]: 4,2 Kg

    Kann mir jemand vielleicht sagen, was ich falsch mache? Ich ändere doch nur den Tabellennamen, der die gewünschte Struktur (Label und Wert) enthält.
    ändere ich:

    'foreign_table' => 'tt_content',

    in:

    'foreign_table' => 'tx_newscustom_domain_model_field',

    Dann wird das IRRE-Element nicht mehr angezeigt.

    Ich würde mich über Hilfe sehr freuen.

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    15. 12. 2014, 15:15

    @Schwerine :)

    Ja das mag sein. Ich suche schon seit gestern nach einer Lösung und bin auf dieses Thema gestoßen, habe versucht es für meine Zwecke abzuleiten. Aber irgendwie bringe ich da vielleicht etwas durcheinander. Über IRRE soll ja eine eigene Tabelle mit nur zwei Feldern verwendet werden.

    Irgendwie komme ich nicht weiter.. :(

  • dfluess dfluess
    Jedi-General
    0 x
    1293 Beiträge
    1 Hilfreiche Beiträge
    15. 12. 2014, 17:24

    Hallo nochmal,

    ich bin anscheinend einen riesen Schritt weiter.
    IRRE wird nun im TCA angezeigt und ich kann Einträge hinzugügen. Aber was muß ich tun, damit die Angelegten Datensätze auch direkt unter dem Button: "Neu Anlegen" angezeigt werden und auch verschoben (sortiert) werde können? Ich kann Datenätze anlegen, aber angezeigt werden diese nur in der List-Ansicht.

    Danke für einen Tipp

    Gruß, Detlef

  • 1