Zum Inhalt springen

Datensätze dynamisch erstellen

Erstellt am 15. Dezember 2014 · 7 Antworten · letzte Antwort am 15. Dezember 2014

Tags: TYPO3 6.x, Frage

dfluess ·

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.

ds.jpg

dfluess ·

Aha Danke,

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

dfluess ·

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:

CREATE TABLE tx_meineExtension_domain_model_artikel (
	inhalt int(11) unsigned DEFAULT '0',
);
 
CREATE TABLE tt_content (
	artikel int(11) unsigned DEFAULT '0' NOT NULL
);
[...]
'inhalt' => array(
  'exclude' => 0,
  'label' => 'Inhalte',
  'config' => array(
    'type' => 'inline',
    'foreign_table' => 'tt_content',
    'foreign_field' => 'artikel',
    'maxitems'      => 9999,
    'appearance' => array(
      'collapse' => 0,
      'levelLinksPosition' => 'top',
      'showSynchronizationLink' => 1,
      'showPossibleLocalizationRecords' => 1,
      'showAllLocalizationLink' => 1
    ),
  ),
),
[...]

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

CREATE TABLE tx_newscustom_domain_model_field (
	uid int(11) NOT NULL auto_increment,
	pid int(11) DEFAULT '0' NOT NULL,
	inhalt int(11) unsigned DEFAULT '0',
	tstamp int(11) unsigned DEFAULT '0' NOT NULL,
	crdate int(11) unsigned DEFAULT '0' NOT NULL,
	cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
	deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
	hidden tinyint(4) unsigned DEFAULT '0' NOT NULL,
	starttime int(11) unsigned DEFAULT '0' NOT NULL,
	endtime int(11) unsigned DEFAULT '0' NOT NULL,
	sorting int(10) DEFAULT '0' NOT NULL,
	
	t3ver_oid int(11) DEFAULT '0' NOT NULL,
	t3ver_id int(11) DEFAULT '0' NOT NULL,
	t3ver_wsid int(11) DEFAULT '0' NOT NULL,
	t3ver_label varchar(255) DEFAULT '' NOT NULL,
	t3ver_state tinyint(4) DEFAULT '0' NOT NULL,
	t3ver_stage int(11) DEFAULT '0' NOT NULL,
	t3ver_count int(11) DEFAULT '0' NOT NULL,
	t3ver_tstamp int(11) DEFAULT '0' NOT NULL,
	t3ver_move_id int(11) DEFAULT '0' NOT NULL,
	t3_origuid int(11) DEFAULT '0' NOT NULL,
	
	sys_language_uid int(11) DEFAULT '0' NOT NULL,
	l10n_parent int(11) DEFAULT '0' NOT NULL,
	l10n_diffsource mediumblob,
	
	inhalt int(11) unsigned DEFAULT '0',
	
	PRIMARY KEY (uid),
	KEY parent (pid),
	KEY t3ver_oid (t3ver_oid,t3ver_wsid),
	KEY language (l10n_parent,sys_language_uid)
);
[...]
'inhalt' => array(
  'exclude' => 0,
  'label' => 'Inhalte',
  'config' => array(
    'type' => 'inline',
    'foreign_table' => 'tx_newscustom_domain_model_field',
    'foreign_field' => 'artikel',
    'maxitems'      => 9999,
    'appearance' => array(
     'collapse' => 0,
     'levelLinksPosition' => 'top',
     'showSynchronizationLink' => 1,
     'showPossibleLocalizationRecords' => 1,
     'showAllLocalizationLink' => 1
    ),
  ),
),
[...]
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_news_domain_model_news','inhalt');
Schweriner ·

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 😛

dfluess ·

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:
Abmessung L x B x H: 123 x 23 x 999
Gewicht: 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 ·

@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 ·

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