DCA-Felder in tl_member.php unter Contao 5.3 anpassen
Hallo zusammen,
ich möchte den Thread gerne fortsetzen, weil beim Upgrade auf Contao 5.3 eine Schema-Änderung einfach nicht durchläuft. Die Meldung ist
PHP-Code:
An exception occurred while executing a query: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'description' at row 1
.
Für alle, die ebenfalls Felder unter 5.3 erweitern wollen und nicht weiterkommen, poste ich mal all meine Dateien. Im Ordner contao/dca (auf der Ebene von files und templates) liegt
PHP-Code:
<?php
// contao/dca/tl_member.php
// Erforderlich, damit das Feld im Backend hinzugefügt wird
use Contao\CoreBundle\DataContainer\PaletteManipulator;
// Eigenes Feld definieren
$GLOBALS['TL_DCA']['tl_member']['fields']['title'] = [
// Den Labeltext gleich hier im DCA definieren
'label' => ['Beruf', 'Beruf'],
'inputType' => 'text',
'eval' => ['mandatory' => false, 'tl_class' => 'w50', 'maxlength' => 255],
'sql' => ['type' => 'string', 'length' => 255, 'default' => ''],
];
$GLOBALS['TL_DCA']['tl_member']['fields']['description'] = [
// Den Labeltext gleich hier im DCA definieren
'label' => ['Beschreibung', 'Beschreibung hinzufügen'],
'inputType' => 'textarea',
'eval' => ['rte' => 'tinyMCE', 'tl_class' => 'clr', 'style'=>'width:100%;'],
'sql' => "text NULL"
];
$GLOBALS['TL_DCA']['tl_member']['fields']['button_linkurl'] = [
// Den Labeltext gleich hier im DCA definieren
'label' => ['Google-Link', 'Google-Link'],
'inputType' => 'text',
'eval' => ['rgxp' => 'url', 'decodeEntities' => true, 'maxlength' => 255, 'dcaPicker' => true, 'addWizardClass' => false, 'tl_class' => 'w50', 'configure' => true],
'sql' => ['type' => 'string', 'default' => ''],
];
$GLOBALS['TL_DCA']['tl_member']['fields']['avatar'] = [
// Den Labeltext gleich hier im DCA definieren
'label' => ['avatar', 'Bild auswählen'],
'inputType' => 'fileTree',
'eval' => ['files' => true, 'filesOnly' => true, 'tl_class' => 'w50 m12', 'fieldType' => 'checkbox', 'extensions' => 'jpg,png,jpeg'],
'sql' => "binary(16) NULL",
];
// Das neue Feld den gewünschten Inhaltselementen hinzufügen:
PaletteManipulator::create()
->addField(array('title', 'description'), 'personal_legend', PaletteManipulator::POSITION_APPEND)
->addField(array('avatar', 'button_linkurl'), 'contact_legend', PaletteManipulator::POSITION_APPEND)
->applyToPalette('default', 'tl_member')
;
Damit habe ich zwei neue Textfelder, eine Textarea und einen Bildupload im Mitglieder-Bereich im Backend. Obwohl das 'sql' => "text NULL" bei "description" nicht anders ist als bei Contao 4.13, bemängelt er jetzt die Länge. Woran liegt das?
Ich habe alle möglichen anderen Lösungen schon probiert, also auch das, was Dirksche oben geschrieben hat. Auch ohne width, auch mit length-Angabe usw.. Aber immer derselbe fehler. Das DB-Update habe ich jetzt abgebrochen, es sind trotzdem alle Daten und Felder im Backend da. Aber ich hätte gerne diese Meldung weg.
Hat jemand einen Rat?
Liste der Anhänge anzeigen (Anzahl: 2)
Sorry, hatte Screenshots gemacht.
Anhang 28266
Anhang 28267
Ich habe während der Installation, bevor ich die DB-Daten eingetragen habe, wie immer Files und Templates hochgeladen und zusätzlich die tl_member.php in den contao/dca--Ordner.
PS: Bin mit der Konsole nicht vertraut.
Liste der Anhänge anzeigen (Anzahl: 1)
Vor dem Ausführen der Schema-Änderungen:
PHP-Code:
Feld tl_member.locked löschen
Feld tl_member.allowEmail löschen
Feld tl_member.publicFields löschen
Feld tl_member.alias löschen
Feld tl_member.cm_autocoords löschen
Feld tl_member.cm_map_zoom löschen
Feld tl_member.cm_gc_requestcount löschen
Feld tl_member.cm_map_indivzoom löschen
Feld tl_member.cm_map_center löschen
Feld tl_member.cm_map_indivcenter löschen
Feld tl_member.cm_lng löschen
Feld tl_member.cm_lat löschen
Feld tl_member.cm_coords löschen
Feld tl_member.cm_allowmap löschen
Feld tl_member.loginAttempts löschen
Feld tl_member.login ändern
TINYINT(1) DEFAULT 0 NOT NULL
Feld tl_member.assignDir ändern
TINYINT(1) DEFAULT 0 NOT NULL
Feld tl_member.disable ändern
TINYINT(1) DEFAULT 0 NOT NULL
Feld tl_member.title ändern
VARCHAR(255) DEFAULT '' NOT NULL
Feld tl_member.description ändern
VARCHAR(255) DEFAULT '' NOT NULL
Feld tl_member.useTwoFactor ändern
TINYINT(1) DEFAULT 0 NOT NULL
ALTER TABLE tl_member DROP locked, DROP allowEmail, DROP publicFields, DROP alias, DROP cm_autocoords, DROP cm_map_zoom, DROP cm_gc_requestcount, DROP cm_map_indivzoom, DROP cm_map_center, DROP cm_map_indivcenter, DROP cm_lng, DROP cm_lat, DROP cm_coords, DROP cm_allowmap, DROP loginAttempts, CHANGE login login TINYINT(1) DEFAULT 0 NOT NULL, CHANGE assignDir assignDir TINYINT(1) DEFAULT 0 NOT NULL, CHANGE disable disable TINYINT(1) DEFAULT 0 NOT NULL, CHANGE title title VARCHAR(255) DEFAULT '' NOT NULL, CHANGE description description VARCHAR(255) DEFAULT '' NOT NULL, CHANGE useTwoFactor useTwoFactor TINYINT(1) DEFAULT 0 NOT NULL
Nach dem Ausführen:
PHP-Code:
Feld tl_member.locked löschen
An exception occurred while executing a query: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'description' at row 1
Feld tl_member.allowEmail löschen
Feld tl_member.publicFields löschen
Feld tl_member.alias löschen
Feld tl_member.cm_autocoords löschen
Feld tl_member.cm_map_zoom löschen
Feld tl_member.cm_gc_requestcount löschen
Feld tl_member.cm_map_indivzoom löschen
Feld tl_member.cm_map_center löschen
Feld tl_member.cm_map_indivcenter löschen
Feld tl_member.cm_lng löschen
Feld tl_member.cm_lat löschen
Feld tl_member.cm_coords löschen
Feld tl_member.cm_allowmap löschen
Feld tl_member.loginAttempts löschen
Feld tl_member.login ändern
Feld tl_member.assignDir ändern
Feld tl_member.disable ändern
Feld tl_member.title ändern
Feld tl_member.description ändern
Feld tl_member.useTwoFactor ändern
ALTER TABLE tl_member DROP locked, DROP allowEmail, DROP publicFields, DROP alias, DROP cm_autocoords, DROP cm_map_zoom, DROP cm_gc_requestcount, DROP cm_map_indivzoom, DROP cm_map_center, DROP cm_map_indivcenter, DROP cm_lng, DROP cm_lat, DROP cm_coords, DROP cm_allowmap, DROP loginAttempts, CHANGE login login TINYINT(1) DEFAULT 0 NOT NULL, CHANGE assignDir assignDir TINYINT(1) DEFAULT 0 NOT NULL, CHANGE disable disable TINYINT(1) DEFAULT 0 NOT NULL, CHANGE title title VARCHAR(255) DEFAULT '' NOT NULL, CHANGE description description VARCHAR(255) DEFAULT '' NOT NULL, CHANGE useTwoFactor useTwoFactor TINYINT(1) DEFAULT 0 NOT NULL
Anhang 28268
Liste der Anhänge anzeigen (Anzahl: 1)