yakamara / yform

YForm für REDAXO 5 – Formulare im Frontend und Backend mit Verwaltung von Datenbank-Tabellen.
MIT License
77 stars 55 forks source link

Choice: Beschriftung für Attribute überarbeiten, Doku verbessern #717

Open alxndr-w opened 5 years ago

alxndr-w commented 5 years ago

Die Option choice_attributes ist teilweise undokumentiert oder fehlerhaft:

Beispiel:

Attribute für jede Auswahl (choice_attributes) Mit dieser Option können zu jeder Auswahl zusätzliche HTML-Attribute hinzugefügt werden. Callable: foo($attributes, $value, $label); foo::bar($attributes, $value, $label) oder JSON: {"class": "choicable", "DE": {"data-language": "de-de"}}

Korrekt wäre aktuell

Mit dieser Option können zu jeder Auswahl zusätzliche HTML-Attribute hinzugefügt werden. Callable: foo ruft eine Funktion auf, bspw. foo($value, $label) { return ["class" => "meineklasse"] } auf, foo:bar ruft die Methode foo::bar($value, $label) auf, oder JSON: {"class": "choicable", "DE": {"data-language": "de-de"}}

@tbaddade oder meintest du noch was anderes damit, warum da $attributes hin/weggehört?

tbaddade commented 5 years ago

oder meintest du noch was anderes damit

nachsehen

dtpop commented 5 years ago

Hallo Thomas, Ich bin ehrlich gesagt auch noch nicht so ganz durchgestiegen, wie man individuelle Attribute pro Option definieren kann. Es ist mir wohl gelungen auf alle Optionen gleiche Attribute zu setzen, das funktioniert gemäß Dokumentation. Die Funktion für die option_attributes wird aber nur einmal aufgerufen. Es ist mir nicht gelungen ihr den Wert des jeweiligen option Values zu übergeben, um dann entsprechende option_attributes zurück- und auszugeben. Ich habe dann aufgegeben. Es wäre ein echtes Killerfeature, insofern bin ich sehr an einer Lösung interessiert. Lg, Wolfgang

tbaddade commented 5 years ago

@dtpop

Am YForm value müsstest du nur das Callable notieren Foo::bar oder foo_bar

Dein Callable würde dann so notiert

class Foo {
    public static function bar($value, $label) {
        return [];
    }
}

Ich müsste nachsehen warum das $attributes in der notice notiert wurde.

dtpop commented 5 years ago

Danke Thomas & Alex! Ich habe mal einen PR gemacht. Gerne nochmal checken: https://github.com/yakamara/redaxo_yform_docs/pull/133

alxndr-w commented 5 years ago

@tbaddade ich hätte gerade sogar den Use Case, dass es nützlich wäre, Formularname und Feldname mit zu übergeben, statt pur value/label, weil ich sonst für jedes Choice-Feld in diesem Formular (ein Preiskonfigurator) eine eigene Funktion/Methode erstellen muss.

Vielleicht wäre es sinnvoll, dies noch als 3. Parameter zu übergeben.

Ich bin auch der Meinung, dass die vorhandenen Attribute überschreibbar/entfernbar sein sollten und daher fände ich es sinnvoll, die $attributes auch mit zu übergeben.

dtpop commented 5 years ago

Den Fall könntest du auch über eine Property steuern. z.B.

alxndr-w commented 5 years ago

Den Fall könntest du auch über eine Property steuern. z.B.

Wie meinen?

alxndr-w commented 5 years ago

Nach weiterem Nachdenken: Ich finde, Properties sind an der Stelle ein Umweg (falls überhaupt möglich?) und man sollte es schon direkt verfügbar haben.

alxndr-w commented 4 years ago

@tbaddade kannst du noch wie hier festgestellt Formularname und Feldname im Callback verfügbar machen? Damit die aufgerufene Methode weiß, um welches Formular es sich handelt.