Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hi Deus, Deus wrote: > Hat jemand eine Idee? Da wirst du Debuggen müssen. Vielleicht nutzt extbase die falsche Tabelle? Schau mal in die Mapping Configuration im Typoscript. Grüße -- Philipp Gampe – PGP-Key 0AD96065 – TYPO3 UG Bonn/Köln Certified Integrator – Active contributor TYPO3 CMS TYPO3 inspiring people to share! ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo. Ich fasse das Thema nochmal kurz zusammen, weil doch schon einige Einträge vorhanden sind. Ich habe eine neue Extension erstellt und möchte auf bereits bestehende NICHT-Typo3 Tabellen zugreifen. Zudem habe ich mit dem Extension-Builder ein neues Model-Object angelegt und bei "Map to existing table" den entsprechenden Tabellennamen eingetragen. Ebenso habe ich die Tabelle um folgende Felder erweitert: - uid - pid - crdate - tstamp - deleted - hidden - etc. Die Tabelle hat schon einen Primary-Key: id deswegen habe ich einen BEFORE-INSERT Trigger erstellt, der die uid und die id in sync hält. DROP TRIGGER IF EXISTS triggerBeforeInsertCampaign; CREATE TRIGGER triggerBeforeInsertCampaign BEFORE INSERT ON campaigns FOR EACH ROW SET NEW.uid = (SELECT id FROM campaigns ORDER BY id DESC LIMIT 1) + 1 Ebenso habe ich ein neues TCA File Campaign.php erstellt. Ich kann nun im Typo3 Backend Neue Datensätze zu der Tabelle hinzufügen. Ebenso kann ich im Frontend (listAction) die Datensätze erfolgreich anzeigen, aktualisieren und löschen (deleted wird auf 1 gesetzt). Wenn ich nun über das Frontend (newAction, createAction) einen neuen Datensatz anlegen möchte, macht er gar nichts. Ich bekomme zwar die Erfolgsmeldung "The object was created..." aber der Datensatz wird NICHT in die Tabelle eingefügt. Hat jemand eine Idee? Vielen Dank, lg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hi. Bei Extbase ist es ja normal so, dass das persist All automatisch ausgeführt wird. Sicherheitshalber habe ich das noch manuell angestoßen. Leider ohne Erfolg. Hier mein Test-Code aus dem Controller: $newCampaign = $this->objectManager->get('\\Vendor\\MyExt\\Domain\\Model\\Campaign'); $newCampaign->setFromName('test'); $newCampaign->setTxExtbaseType('Tx_MyExt_Campaign'); $this->campaignRepository->add($newCampaign); $persistenceManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance("TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager"); $persistenceManager->persistAll(); Hat noch jemand einen anderen Hinweis? Vielen Dank, lg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hi Deus, Deus wrote: > Woran kann das noch liegen? Evtl. musst du etwas in deinem Controller falsch? Ggf. fehlt ein persistAll() o.ä. Grüße -- Philipp Gampe – PGP-Key 0AD96065 – TYPO3 UG Bonn/Köln Certified Integrator – Active contributor TYPO3 CMS TYPO3 inspiring people to share! ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo Philipp. Vielen Dank für den Hinweis. Habe mir dazu mal einen BeforeInsert-Trigger geschrieben: CREATE TRIGGER triggerBeforeInsertCampaign BEFORE INSERT ON campaigns FOR EACH ROW SET NEW.uid = (SELECT ID FROM campaigns ORDER BY id DESC LIMIT 1) + 1; Somit haben die Felder id und uid immer die gleichen Werte. Wenn ich nun über das Typo3 Backend einen neuen Datensatz anlege, dann fügt er auch in der Tabelle "campaigns" korrekt einen Datensatz hinzu. Wenn ich nun über das Formular auf meiner Seite eine neue Kampagne erstellen möchte, fügt er leider keinen Datensatz in der Datenbank ein. Woran kann das noch liegen? Vielen Dank, lg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hi Deus, Deus wrote: > Die bestehende Tabelle hat bereits einen Primary-Key "id". > Wie bringe ich Typo3 bei, dass "id" als "uid" verwendet werden soll? > Geht das überhaupt oder muss ich ein neues Feld "uid" hinzufügen. AFAIK kann man pid und uid nicht umkonfigurieren. Du müsstest dir halt noch eine Spalte uid anlegen und eine Prozedur (DB) schreiben, welche uid und id in Sync hält. Grüße -- Philipp Gampe – PGP-Key 0AD96065 – TYPO3 UG Bonn/Köln Certified Integrator – Active contributor TYPO3 CMS TYPO3 inspiring people to share! ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo. Vielen Dank für die Infos. Das Softdelete funktioniert nun! Die bestehende Tabelle hat bereits einen Primary-Key "id". Wie bringe ich Typo3 bei, dass "id" als "uid" verwendet werden soll? Geht das überhaupt oder muss ich ein neues Feld "uid" hinzufügen. Es funktionieren inzwischen UPDATE, DELETE (als soft-delete). INSERT macht immer noch Probleme. Vielen Dank für die Info! lg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo, um die Daten im Listenmodul zu finden ist das Feld pid entscheidend. Es muss die uid der Seite enthalten, auf der der Datensatz erscheinen soll. Die Felder *ver* sind nur wichtig, wenn man eine Versionierung braucht und die Felder sys_l* sowie l10* sind nur nötig, wenn man eine Sprachverwaltung braucht. cruser_id wird nur für die Rechteverwaltung benötigt. starttime und endtime sind nur nötig, wenn man eine Zeitsteuerung benötigt. deleted, hidden, crdate, tstamp sind wichtig für die interne Verwaltung der Daten und für die Darstellung im Listenmodus. Letzterer benötigt aber noch pid - siehe oben - und ein Feld für die Darstellung der Bezeichnung. Das ist meist title, kann aber auch anders heissen, dann muss das aber im TCA angegeben werden. Wenn du über die Listendarstellung löschst, dann wird nicht physikalisch gelöscht, sondern deleted auf 1 gesetzt. Gruß Peter > Am 14.03.2016 um 08:55 schrieb Deus: > > Hallo. > Habe nun folgende Felder in der Datenbank und im TCA hinzugefügt: > - deleted > - hidden > - crdate > - tstamp > - cruser_id > - starttime > - endtime > - t3ver_oid > - t3ver_id > - t3ver_wsid > - t3ver_label > - t3ver_state > - t3ver_stage > - t3ver_tstamp > - t3ver_origuid > - sys_language_uid > - l10n_parent > - l10n_diffsource > > Wie gesagt, ich kann die Datensätze auslesen und anzeigen. > Update funktioniert auch. > Beim Löschen wird kein Soft-Delete gemacht, sondern der Datensatz aus der > Tabelle entfernt. > Einfügen über das Formular funktioniert leider auch nicht. > Ebenso finde ich im Backend im Listenmodul die entsprechende Tabelle > "campaigns" nicht. > > Hat noch jemand eine Idee? > > Vielen Dank, > lg > ___ > TYPO3-german mailing list > TYPO3-german@lists.typo3.org > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german -- Xing: http://www.xing.com/profile/Peter_Linzenkirchner Web: http://www.typo3-lisardo.de Facebook: http://tinyurl.com/lisardo-multimedia ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo. Habe nun folgende Felder in der Datenbank und im TCA hinzugefügt: - deleted - hidden - crdate - tstamp - cruser_id - starttime - endtime - t3ver_oid - t3ver_id - t3ver_wsid - t3ver_label - t3ver_state - t3ver_stage - t3ver_tstamp - t3ver_origuid - sys_language_uid - l10n_parent - l10n_diffsource Wie gesagt, ich kann die Datensätze auslesen und anzeigen. Update funktioniert auch. Beim Löschen wird kein Soft-Delete gemacht, sondern der Datensatz aus der Tabelle entfernt. Einfügen über das Formular funktioniert leider auch nicht. Ebenso finde ich im Backend im Listenmodul die entsprechende Tabelle "campaigns" nicht. Hat noch jemand eine Idee? Vielen Dank, lg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Am 09.03.2016 um 16:46 schrieb Deus: Hallo. Ich habe nun auch folgende Felder für die Tabelle hinzugefügt: -uid -pid -deleted -hidden -crdate -tstamp Wenn ich in der List-Ansicht einen Datensatz editiere und speichere, wird der entsprechende Datensatz in der Datenbank aktualisiert. Wenn ich in der List-Ansicht bei einem Datensatz auf "löschen" klicke, wird der Datensatz aus der Tabelle entfernt und nicht nur (wie üblich) ein Soft-Delete (deleted=1) gemacht. Das Einfügen von neuen Datensätzen über ein Formular funktioniert leider auch nicht. Habt ihr dazu noch eine Idee? Die Felder alleien reichen wohl nicht. wichtig ist dass du alles ordentlich im TCA deklarierst. Schau dir dazu die TCA-Deklaration anderer Tabellen im BE an (Configuration Module). die meisten Tabellen haben ja noch ein paar Felder mehr, aber Workspaces und Übersetzungen braucht man ja nicht überall. bernd ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo. Ich habe nun auch folgende Felder für die Tabelle hinzugefügt: -uid -pid -deleted -hidden -crdate -tstamp Wenn ich in der List-Ansicht einen Datensatz editiere und speichere, wird der entsprechende Datensatz in der Datenbank aktualisiert. Wenn ich in der List-Ansicht bei einem Datensatz auf "löschen" klicke, wird der Datensatz aus der Tabelle entfernt und nicht nur (wie üblich) ein Soft-Delete (deleted=1) gemacht. Das Einfügen von neuen Datensätzen über ein Formular funktioniert leider auch nicht. Habt ihr dazu noch eine Idee? Ich habe auch schon folgendes TypoScript hinzugefügt: config.tx_myextension { persistence { classes { Tx_MyExtension_Domain_Model_Campaign { mapping { tableName = campaigns recordType = Tx_MyExtension_Domain_Model_Campaign columns { uid.mapOnProperty = id pid.mapOnProperty = pid hidden.mapOnProperty = hidden deleted.mapOnProperty = deleted } } } } } } Vielen Dank, lg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo Nicole. Vielen Dank für dein Feedback und deine Geduld. Wenn ich das TCA wie von dir vorgeschlagen speichere, dann habe ich keinen Zugriff auf die Daten. Extbase findet zwar die korrekte Anzahl an Objekte und zeigt mir auch in der List-View die Edit/Delete Buttons an, aber die einzelnen Getter-Methoden funktionieren nicht. Wenn ich jedoch den Inhalt des TCA wie von mir unten beschrieben definiere, dann habe ich Zugriff auf die Daten mit den Getter-Methoden. Allerdings, kann ich keine neuen Datensätze mit folgendem Code im Controller einfügen: $newCampaign = $this->objectManager->get('\\Vendor\\MyExt\\Domain\\Model\\Campaign'); $newCampaign->setFromName('test'); $this->campaignRepository->add($newCampaign); Vielen Dank für deine Hilfe, lg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo Deus, Am 08.03.2016 um 14:16 schrieb Deus: Hallo nochmal. Ich habe es hinbekommen. Das TCA-File muss so aussehen: $GLOBALS['TCA']['campaigns']['ctrl'], 'interface' => array( ), 'types' => array( ), 'palettes' => array( ), 'columns' => array( ), ); ## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder $GLOBALS['TCA']['campaigns']['columns'] = array( ); ?> Der Extension-Builder erzeugt hier leider immer noch falsche Ausgaben. Richtige wäre eine Datei campaigns.php mit folgendem Inhalt: ``` array(), 'interface' => array(), 'types' => array(), 'palettes' => array(), 'columns' => array(), ); ``` -> TCA-Dateien sollen die Konfiguration als array zurückgeben, nicht global im TCA registrieren. Best regards, Nicole -- Nicole Cordes TYPO3 CMS Core Team Member TYPO3 Security Team Co-Leader TYPO3 inspiring people to share! Get involved: typo3.org ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo nochmal. Ich habe es hinbekommen. Das TCA-File muss so aussehen: $GLOBALS['TCA']['campaigns']['ctrl'], 'interface' => array( ), 'types' => array( ), 'palettes' => array( ), 'columns' => array( ), ); ## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder $GLOBALS['TCA']['campaigns']['columns'] = array( ); ?> Danke, lg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo. Vielen Dank für euer Feedback. Da ich mich mit dem TCA (noch) nicht wirklich gut auskenne mal wieder die Frage: Wie gehts das? Habe im Ordner Configuration/TCA eine Datei Campaigns.php erstellt. Diese hat folgenden Inhalt: $TCA['campaigns']['ctrl'], 'interface' => array( // 'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, name, description, hashtag, share_description, share_link, share_name, share_caption, enable_facebook_share, enable_facebook_like, enable_tweet, facebook_share_reward, facebook_share_foreign_reward, facebook_like_reward, tweet_reward, upload_image_reward, base_url, enable_voting, image_limit, topic_limit, header, header_after_forms, footer, enable_score, tab_html, sort, start_date, end_date, upload_header, upload_footer, unlock_needed, send_unlock_notification, company, company_gateway', ), 'types' => array( // '1' => array('showitem' => 'sys_language_uid1-1-1, l10n_parent, l10n_diffsource, hidden;;1, name, description, hashtag, share_description, share_link, share_name, share_caption, enable_facebook_share, enable_facebook_like, enable_tweet, facebook_share_reward, facebook_share_foreign_reward, facebook_like_reward, tweet_reward, upload_image_reward, base_url, enable_voting, image_limit, topic_limit, header, header_after_forms, footer, enable_score, tab_html, sort, start_date, end_date, upload_header, upload_footer, unlock_needed, send_unlock_notification, company, company_gateway,--div--;LLL:EXT:cms/locallang_ttc.xml:tabs.access,starttime, endtime'), ), 'palettes' => array( '1' => array('showitem' => ''), ), 'columns' => array( ), ); ## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder $TCA['campaigns']['columns'] = array( ); ?> Die bestehende Tabelle heißt: "campaigns" Ich habe eine neue Extension erstellt. Dort habe ich ein neues Model mit dem Namen "Campaign" erzeugt. In den Domain Object Settings habe ich das Häkchen für "Is aggregate root?" gesetzt. Ebenso habe ich bei "Map to existing table" den Namen "campaigns" eingetragen. Leider bekomme ich immer noch folgende Fehlermeldung: Extension could not be saved: There is no entry for table "campaigns" of Campaign in TCA. For technical reasons you can only extend tables with TCA configuration. Habt ihr vielleicht noch einen Tipp für mich? Vielen Dank, lg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Am 07.03.2016 um 16:33 schrieb Deus: Hallo Nicole. Vielen Dank für dein Feedback. Die Tabellen auf die ich zugreifen will, sind von einem NICHT-Typo3-Projekt. Dh. es existieren keine TCA-Dateien. Ebenso gibt es in den Tabellen auch keine PID, tstamp, crdate, etc. Wir haben ein PHP-Projekt zugekauft und das will ich jetzt mit Extbase erweitern. Ist sowas überhaupt möglich? grundsätzlich geht in TYPO3 alles :) es kommt darauf an, was du genau machen möchtest. du kannst eine Extension schreiben, die komplett ohne TYPO3 auf diese Tabelle (ich würde eher nicht-TYPO3 als nicht-extbase sagen) zugreift. sauberer ist es aber diese Tabelle für TYPO3 bekannt zu machen, sonst würde zb. auch das Install-Tool über diese nicht deklarierte Tabelle meckern (und versuchen sie umzubennenen). Da du ja schon festgestellt hast, dass diese Tabelle nicht die in TYPO3 üblichen Felder enthält wäre es evtl. auch von Vorteil wenn diese Felder vorhanden sind. normalerweise stören zusätzliche Felder ja nicht. Problematisch sind Felder gleichen Namens aber ganz anderen Typs oder Inhalts. Wenn due eine Extension erstellst, die diese Tabelle mit allem sauber für TYPO3 deklarierst kannst du natürlich auch aus TYPO3 (oder einer TYPO3-Extension) einfacher auf die Daten zu greifen. zb. mit einem extbase interface um die Daten dann in einem Fluid-Template zu benutzen. Ob BE-User dann die Daten im TYPO3-BE dann verändern dürfen kann man ja immer noch per Konfiguration verhindern. bernd ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo Deus, Am 07.03.2016 um 16:33 schrieb Deus: Die Tabellen auf die ich zugreifen will, sind von einem NICHT-Typo3-Projekt. Dh. es existieren keine TCA-Dateien. Ebenso gibt es in den Tabellen auch keine PID, tstamp, crdate, etc. Wir haben ein PHP-Projekt zugekauft und das will ich jetzt mit Extbase erweitern. Dann erstell doch das TCA dafür in deiner Extension? AFAIK brauchst du nur einen $GLOBALS['TCA'] Eintrag dafür. Du musst die Felder nicht unbedingt konfigurieren, macht aber vielleicht trotzdem Sinn das auch im Backend zu haben?! Best regards, Nicole -- Nicole Cordes TYPO3 CMS Core Team Member TYPO3 Security Team Co-Leader TYPO3 inspiring people to share! Get involved: typo3.org ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo Nicole. Vielen Dank für dein Feedback. Die Tabellen auf die ich zugreifen will, sind von einem NICHT-Typo3-Projekt. Dh. es existieren keine TCA-Dateien. Ebenso gibt es in den Tabellen auch keine PID, tstamp, crdate, etc. Wir haben ein PHP-Projekt zugekauft und das will ich jetzt mit Extbase erweitern. Ist sowas überhaupt möglich? Danke, lg ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] Bestehende NICHT-extbase Tabelle erweitern und nutzen
Hallo Deus, Am 07.03.2016 um 15:46 schrieb Deus: Leider kommt beim Speichern folgende Fehlermeldung: Extension could not be saved: There is no entry for table "campaigns" of Campaign in TCA. For technical reasons you can only extend tables with TCA configuration. Ist es überhaupt möglich "fremde" Tabellen in einer Extbase-Extension zu benutzen? Wie die Fehlermeldung schon sagt, du brauchst eine Extension im System, die dir diese Tabellen bereitstellt. Wahrscheinlich macht das die alte Extension -> dann muss diese für die Extension-Builder-Konfigurierung dann auch vorhanden sein. Best regards, Nicole -- Nicole Cordes TYPO3 CMS Core Team Member TYPO3 Security Team Co-Leader TYPO3 inspiring people to share! Get involved: typo3.org ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german