[Frage] Werte werden nach Neuanlage eines Datensatz überschrieben TYPO3-Version: 9.5.13

  • Cooter Cooter
    Typ im Roten Hemd
    0 x
    2 Beiträge
    0 Hilfreiche Beiträge
    24. 01. 2020, 16:22

    Hallo zusammen!
    Ich habe da ein Phaänomen in einer Extension, die ich mit dem Extension-Builder neu aufgesetzt habe.

    Im Prinzip habe ich eine einfache Tabelle und möchte sie im Backend mit Daten füllen... keine große Sache. Das ging zu Beginn auch gut. Nun wollte ich am Tag darauf weitere Datensätze anlegen. Beim ersten neuen Datensatz wurde dieser auch korrekt in die Tabelle geschrieben, jedoch bei ALLEN ANDEREN Datensätzen wurde das Sortierfeld mit der Zahl 512 überschrieben. In der Datenbank ist es ein normales VARCHAR(255) Feld und im Backend auch nur ein einfaches Textfeld.

    Ich weiß leider so gar nicht wo ich hier noch ansetzen soll und vor allem .. wo die 512 herkommt????

    Bin gespannt auf Euere Antworten.
    Verzweifelte Grüße
    Rainer

  • Hilfreichster Beitrag

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    1 x
    3116 Beiträge
    137 Hilfreiche Beiträge
    27. 01. 2020, 10:59 - Hilfreichster Beitrag

    Hallo Rainer.

    Die 'sorting'-Spalte wird eigentlich von TYPO3 selbst verwaltet, sofern sie im TCA unter ['ctrl']['sortby'] angegeben ist.
    Um zwischen Datensätzen Platz für neue/verschobene Datensätze zu haben, nummeriert TYPO3 in der Spalte nicht einfach mit n+1 durch, sondern lässt Platz und nummeriert mit n+256 durch.

    \TYPO3\CMS\Core\DataHandling\DataHandler
    [code]/**
    * The interval between sorting numbers used with tables with a 'sorting' field defined.
    *
    * Min 1, should be power of 2
    *
    * @var int
    */
    public $sortIntervals = 256;[/code]

    Das erklärt zumindest die 512.

    Warum 512 für *alle* Datensätze gesetzt wird, kann ich mir hingegen nicht erklären.

    Viele Grüße
    Julian


  • 1
  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    1 x
    3116 Beiträge
    137 Hilfreiche Beiträge
    27. 01. 2020, 10:59

    Hallo Rainer.

    Die 'sorting'-Spalte wird eigentlich von TYPO3 selbst verwaltet, sofern sie im TCA unter ['ctrl']['sortby'] angegeben ist.
    Um zwischen Datensätzen Platz für neue/verschobene Datensätze zu haben, nummeriert TYPO3 in der Spalte nicht einfach mit n+1 durch, sondern lässt Platz und nummeriert mit n+256 durch.

    \TYPO3\CMS\Core\DataHandling\DataHandler
    [code]/**
    * The interval between sorting numbers used with tables with a 'sorting' field defined.
    *
    * Min 1, should be power of 2
    *
    * @var int
    */
    public $sortIntervals = 256;[/code]

    Das erklärt zumindest die 512.

    Warum 512 für *alle* Datensätze gesetzt wird, kann ich mir hingegen nicht erklären.

    Viele Grüße
    Julian

  • Cooter Cooter
    Typ im Roten Hemd
    0 x
    2 Beiträge
    0 Hilfreiche Beiträge
    04. 11. 2020, 13:49

    Hi nochmal!

    Ich denke ich hab nach langer Zeit nun das Problem lösen können. Dein Ansatz mit dem SORTBY war schon ein Anstoß in die richtige Richtung.

    Ich habe im TCA unter SORTBY ein Textfeld angegeben nach welchem ich gern sortiert hätte. Nur zieht der SORTBY-Parameter wohl auf einen Integer-Wert ab.

    Nachdem ich dann den Parameter DEFAULT_SORTBY eingebaut habe, ist es mir auch möglich, nach einem Textfeld auf- und absteigend zu sortieren.

    Habe zwar jetzt ein paar graue Haare mehr, aber dafür keine Probleme mehr beim Füllen der Tabellen.

    Danke für den Denkanstoß und herzliche Grüße
    Rainer

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    3116 Beiträge
    137 Hilfreiche Beiträge
    10. 11. 2020, 10:10

    Prima. Freut mich, dass Du Dein Problem lösen konntest.

    Ich hänge hier mal noch einen Blogbeitrag der Jungs von snowflake mit an. Die haben sich mit den Unterschieden von 'sorting' und 'default_sortby' ausführlicher befasst:
    https://blog.snowflake.ch/2012/10/10/tca-sortby-und-default_sortby/

  • 1