Ergebnis 1 bis 13 von 13

Thema: SQL von DCA-Feldern überschreiben

  1. #1
    Contao-Nutzer
    Registriert seit
    29.01.2013.
    Beiträge
    157

    Standard SQL von DCA-Feldern überschreiben

    Hallo,

    ich würde gern "description" von Nachrichten so überschreiben, dass es eine Textarea mit tinyMCE ist. Leider ist das Feld aktuell als varchar(255) angelegt. Ich wollte daher im DCA sql auf "TEXT null" setzen, aber das wird leider ignoriert. Wenn ich Datenbank aktualisieren klicke, steht da, sie wäre aktuell.

    Wo überschreibe ich so etwas? In den database.sql-Dateien habe ich auch nichts gefunden.

    Ciao The_Unknown

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Beschreibe mal genau was du überhaupt gemacht hast, sollte eigentlich funktionieren.

  3. #3
    Contao-Nutzer
    Registriert seit
    29.01.2013.
    Beiträge
    157

    Standard

    orm_avisota_message.php in xmodule (wird also am Schluss geladen):

    PHP-Code:
    <?php

    $dca 
    = &$GLOBALS['TL_DCA']['orm_avisota_message'];

    /**
     * Fields
     */
    unset($dca['fields']['description']['eval']['maxlength']);
    unset(
    $dca['fields']['description']['eval']['rows']);
    $dca['fields']['description']['eval']['rte'] = 'tinyMCE';
    $dca['fields']['description']['sql'] = "text NULL";

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Ich weiß leider nicht was orm_avisota_message.php und xmodule sein soll, aber solche Sachen gehören normalerweise in eine eigene Extension oder einfach in die system/config/dcaconfig.php

  5. #5
    Contao-Nutzer
    Registriert seit
    29.01.2013.
    Beiträge
    157

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ich weiß leider nicht was orm_avisota_message.php und xmodule sein soll, aber solche Sachen gehören normalerweise in eine eigene Extension oder einfach in die system/config/dcaconfig.php
    xmodule ist die Extension (der Name ist natürlich nur ein Beispiel gewesen) und orm_avisota_message.php die Datei, die normalerweise in einer Extension unter dca liegt, bspw. tl_module.php.

    dcaconfig.php nehme ich nicht, weil die sonst irgendwann 3 MB groß wäre und so Wiederverwendung beim nächsten Projekt mit immensem Aufwand verbunden wäre.

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Vielleicht fehlt dir einfach nur der autoload.ini Eintrag. Aufgrund des Verzeichnisnamens der Extension kannst du dich nicht (mehr) verlassen, dass deine Extension nach Avisota geladen wird. Du musst das als Abhängigkeit in der autoload.ini festlegen.

  7. #7
    Contao-Nutzer
    Registriert seit
    29.01.2013.
    Beiträge
    157

    Standard

    Stimmt, das hätte sein können, aber auch ein Hinzufügen von

    requires[] = "avisota-message"

    bringt nix Avisota scheint die Datenbankeinträge irgendwie anders zu definieren. Evtl. hat es etwas mit Doctrine zu tun?

  8. #8
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
    $dca['fields']['description']['sql'] = "text NULL"
    Das wird vollständig ignoriert. Theoretisch kannst du zwar den Typ festlegen, aber praktisch solltest du das aber gar nicht weil das automatisch erkannt wird.
    Für eine Tiny Textarea fehlt dir aber ein wichtiges Detail:
    PHP-Code:
    $dca['fields']['description']['inputType'] = 'textarea'
    Anschließend sollte dir das DB Update ein Update des Feldes automatisch anbieten.

  9. #9
    Contao-Nutzer Avatar von Tastaturberuf
    Registriert seit
    14.03.2011.
    Ort
    Berlin
    Beiträge
    197
    User beschenken
    Wunschliste

    Standard

    Geht die automatische Datenbank Aktualisierung über DCA nicht nur wenn die Tabellen mit tl_ beginnen?
    Tastaturberuf | Code with ♥ and Contao.

  10. #10
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    @Cord die Doctrine Erweiterung injected ihre SQL Queries über die entsprechenden Hooks
    Aber damit Contao nicht dazwischen funkt, dürfen die Doctrine Tabellen nicht mit tl_ anfangen, daher kommt der orm_ Präfix.

  11. #11
    Contao-Nutzer
    Registriert seit
    29.01.2013.
    Beiträge
    157

    Standard

    OK, also wenn ich den DCA-Eintrag sql weglasse und dafür den inputType ergänze, passiert nichts. Wenn ich beide Werte setze, wird die Datenbank aktualisiert, und es klappt.
    Geändert von The_Unknown (20.10.2014 um 08:41 Uhr)

  12. #12
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Teilst du uns noch mit was du genau gesetzt hast, damit andere da evtl. nicht nachfragen müssen

  13. #13
    Contao-Nutzer
    Registriert seit
    29.01.2013.
    Beiträge
    157

    Standard

    Na klar Das ganze unten in die dcaconfig.php oder in eine eigene DCA-Datei in einem eigenen Modul:

    PHP-Code:
    $dca = &$GLOBALS['TL_DCA']['orm_avisota_message'];

    /**
     * Fields
     */
    unset($dca['fields']['description']['eval']['maxlength']);
    unset(
    $dca['fields']['description']['eval']['rows']);
    $dca['fields']['description']['eval']['rte'] = 'tinyMCE';
    $dca['fields']['description']['inputType'] = "textarea";
    $dca['fields']['description']['sql'] = "text NULL"
    Und danach die Datenbank aktualisieren.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •