DMAGmbH / dma_elementgenerator

DMA Elementgenerator (Contao)
45 stars 17 forks source link

DB-Fehler unter 4.6 mit Lösung #111

Closed srhinow closed 1 year ago

srhinow commented 5 years ago

Es gibt unter Contao 4.6.5 beim anlegen eines Feldes einen Datenbank-Fehler das die Felder "subpaletteSelector" und "eval_maxlength" als Feldtyp integer nicht mit einem leeren String '' angelegt werden kann. Deshalb ist die Lösung diese beiden Felder in "vendor/dma/dma_elementgenerator/src/dma_elementgenerator/dca/tl_dma_eg_fields.php" die default-Werte von '' auf 0 zusetzen.

srhinow commented 5 years ago

das passiert mir übrigens auch unter Contao 4.4.28 und PHP7.2

grafik

scuben commented 5 years ago

Das hängt mit der Datenbank und dessen "sql_mode" zusammen. Ich weiss nicht mehr genau welcher es ist, mit einem leeren sql_mode kommt der Fehler aber sicher nicht mehr.

srhinow commented 5 years ago

naja ob es immer sinnvoll ist am sql_mode zustellen und ob man auf allen Hosts die Möglichkeit hat nur damit bestimmte Fehler nicht angezeigt weden weiß ich nicht.

Besser wäre die folgenden Werte der: vendor/dma/dma_elementgenerator/src/dma_elementgenerator/dca/tl_dma_eg_fields.php wie folgt zusetzen:

        'eval_maxlength' => array
        (
            'label'                 => &$GLOBALS['TL_LANG']['tl_dma_eg_fields']['eval_maxlength'],
            'default'               => 0,
            'inputType'             => 'text',
            'exclude'               => true,
            'eval'                  => array('maxlength'=>3, 'tl_class'=>'w50', 'rgxp'=>'digit'),
            'sql'                   => "int(10) unsigned NOT NULL default '0'"
        ),

und

        'subpaletteSelector' => array
        (
            'label'                 => &$GLOBALS['TL_LANG']['tl_dma_eg_fields']['subpaletteSelector'],
            'default'               => 0,
            'exclude'               => true,
            'inputType'             => 'select',
            'options_callback'      => array('tl_dma_eg_fields', 'getCheckboxelements'),
            'eval'                  => array('includeBlankOption'=>true, 'tl_class'=>'w50'),
            'sql'                   => "int(10) unsigned NOT NULL default '0'"
        ),

orginal steht da 'default' => '',

und das Datenbankfeld ist nen integer