FriendsOfREDAXO / mform

Spielend einfach umfangreiche Modul-Input-Formulare erzeugen.
MIT License
77 stars 19 forks source link

addMedialistField funktioniert im Repeater nicht #354

Closed georgkaser closed 4 months ago

georgkaser commented 4 months ago

Description / Beschreibung

Siehe Video:

https://github.com/user-attachments/assets/ba173913-fa8c-4a5a-972d-299c4e93972d

Affected versions / Verwendete Versionen

REDAXO: 5.17.1 PHP: 8.2.21 Database: MariaDB 10.11.8 Browser: Chromium Version 126.0.6478.126 (Offizieller Build) Fedora Project (64-Bit) AddOns: mform 8.0.3

Did it whoops? / Whoops erhalten?

nope

skerbis commented 4 months ago

MedialistField und LinklistField sind nicht kompatibel aufgrund der aktuellen Backend-Limitierungen. Empfehlung: entsprechend Repeater bauen.

georgkaser commented 4 months ago

Hmm... Da wird das aber schon ganz schön verschachtelt und unübersichtlich wenn ich zuerst eine Gruppe, dann einen Typ und dann noch einen Repeater einbaue. Blöd. Naja, danke.

Na, obwohl: So schlimm ist es gar nicht:

Bildschirmfoto vom 2024-07-16 20-58-50

skerbis commented 4 months ago

Sorry. Aber wir haben aktuell noch keine Lösung für das Problem. Evtl. muss ein eigenes Widget entwickelt werden.

georgkaser commented 4 months ago

Bin draufgekommen, dass das leider doch nicht so funktioniert wie ich wollte. Kann mir jemand sagen, wie tief ich den Repeater verschachteln darf? Das hier funktioniert nämlich nicht - es wird einfach nichts angezeigt. Oder sind Repeater im Collapse-Element nicht erlaubt?

Hier der Code - es geht um die letzte Repeater-Ebene:


<?php
use FriendsOfRedaxo\MForm;
// init mform
$mform = MForm::factory()

    ->addTabElement('Inhalt', MForm::factory()

        // Repeater Wrapper "Gruppe"

        ->addRepeaterElement(2, MForm::factory()
            ->addTabElement('Gruppierte Module', MForm::factory()

                // Repeater Wrapper "Element"
                ->addRepeaterElement('modules', MForm::factory()

                    ->addFieldsetArea('Modul', MForm::factory()

                        // Auswahl des Typs

                        ->addRadioField('typeselect', ['richtext' => 'Formatierter Text', 'image' => 'Bild', 'files' => 'Dateien' ,3 => 'Something...'], ['label' => 'Typ'], 'richtext')
                            ->setToggleOptions(['richtext' => 'richtext', 'image' => 'image', 'files' => 'files']) 
                        ->addForm(
                            MForm::factory()
                                ->addCollapseElement('',
                                    MForm::factory()

                                        ->addTextAreaField('richtext', ['label' => 'Text-Area 1'])

                                    , true, true, ['data-group-collapse-id' => 'richtext'] 
                                )
                                ->addCollapseElement('',
                                    MForm::factory()

                                        ->addTextAreaField('image', ['label' => 'Text-Area 1'])
                                    , true, true, ['data-group-collapse-id' => 'image'] 
                                )

                                // WARUM FUNKTIONIERT DAS HIER NICHT??

                                ->addCollapseElement('',
                                    MForm::factory()

                                    ->addRepeaterElement('files', MForm::factory()

                                        ->addMediaField('file', array('label'=>'Datei'))

                                        , true, false, ['btn_text' => 'Datei hinzufügen']
                                    )

                                    , true, true, ['data-group-collapse-id' => 'files'] 
                                )

                                // ENDE
                        )

                    )

                    , false, false, ['btn_text' => 'Neues Modul', 'confirm_delete_msg' => 'Modul löschen?']
                )

            , true, false)

            ->addTabElement('Einstellungen', MForm::factory()

            , false, false)

            , false, false, ['btn_text' => 'Neue Gruppe', 'confirm_delete_msg' => 'Gruppe löschen?']
        )
    , true, false)

    ->addTabElement('Einstellungen', MForm::factory()
        ->addTextField(1, ['label' => 'test rex value 1'])
    , false, true)

    ;

echo $mform->show();
shauste commented 4 months ago

Schau mal @georgkaser So klappt es bei mir

->addCollapseElement('Toogle',
                                    MForm::factory()

                                        ->addRepeaterElement('files', MForm::factory()

                                            ->addMediaField('file', array('label'=>'Datei'))

                                            , true, false, ['btn_text' => 'Datei hinzufügen']
                                        )

                                    , true, false, ['data-group-collapse-id' => 'files']
                                ), true
joachimdoerr commented 4 months ago

@georgkaser der Repeater unterstützt nur 2 ebenen. Deswegen funktioniert das so nicht, du setzt da eine 3. Ebene an und die funktioniert so nicht.