FriendsOfREDAXO / tricks

Tipps und Tricks rund um REDAXO 5
https://friendsofredaxo.github.io/tricks/
MIT License
105 stars 33 forks source link

YForm Pipe Notation Syntax #19

Open IngoWinter opened 7 years ago

IngoWinter commented 7 years ago

Die Kurzerklärung zum select Element lautet: select|name|label|Frau=w,Herr=m|[no_db]|defaultwert|multiple=1|selectsize

Wenn ich hier zum Beispiel nur name, label, felder und dann noch multiple setzen will, kann ich statt select|name|label|Opt1=opt1,Opt2=opt2,Opt3=opt3|||1 auch das schreiben: select|name|label|Opt1=opt1,Opt2=opt2,Opt3=opt3|#multiple:1 die Zwischen-Pipes kann ich weglassen, weil ich mit der #-Notation Keys angebe, die von YForm unabhängig von ihrer Position erkannt werden.

Es lassen sich auch mehrere Attribute hinzufügen: text|geburtstag|Geburtstag*|#required:required|#grid:,datepicker

YForm lässt über die Notation # + Attributname nur bestimmte Attribute zu (z.B. ['placeholder', 'autocomplete', 'pattern', 'required', 'disabled', 'readonly'] für ein input[type="text"]. Wenn das nicht ausreicht kann man über #attributes:{"json":"objekt"} alle möglichen Attribute setzen: select|anrede|Anrede*|Bitte wählen=,Frau=Frau,Herr=Herr|#attributes:{"required":""} text|vorname|Vorname*|#attributes:{"required":"","autofocus":"","placeholder":"zb Willi"}

Beispielformular

select|anrede|Anrede*|Bitte wählen=,Frau=Frau,Herr=Herr|#attributes:{"required":""}
text|vorname|Vorname*|#attributes:{"required":"","autofocus":""}
text|nachname|Nachname*|#attributes:{"required":""}
text|strasse_nr|Straße & Nr*|#attributes:{"required":""}
text|plz_ort|PLZ & Ort*|#attributes:{"required":""}
text|geburtstag|Geburtstag*|#grid:,datepicker|#attributes:{"required":"","data-yearrange":"c-100:c"}
email|email|E-Mail*|#attributes:{"required":""}
checkbox|irgendwasakzeptiert|Hiermit aktzeptiere ich irgendwas|#attributes:{"required":""}
submit||Chaka!
action|showtext|Danke fürs Mitmachen|<p class="form_success">|</p>|0
action|tpl2email|name_des_emailtemplates||empfaenger@adresse.de

Die #-Notation ist nicht auf Attributes beschränkt sondern funktioniert mit jedem Key. Auch das Label könnte man damit an eine beliebige stelle setzen: |#label:Foo|

Man könnte also nur noch benannte keys nutzen: text|#name:first_name|#label:Vorname|#... oder eben auch: text|#label:Vorname|#name:first_name|#...

Man kann so übrigens auch eigene Keys hinzufügen, und die dann im eigenen Template auslesen. Man braucht dazu also die Value-Klasse nicht anfassen.

Ist übrigens nichts Pipe-spezifisches, auch wenn man YForm über PHP nutzt kann man beide Varianten nutzen: ['first_name', 'Vorname'] (unbennant, Reihenfolge ist wichtig) ['name' => 'first_name', 'label' => 'Vorname'] (mit Keys, Reihenfolge ist egal)

|first_name|Vorname| und |#name:first_name|#label:Vorname| werden 1:1 in die beiden obigen PHP-Varianten übersetzt.

Und man kann aber eben auch beides mischen: Pipe: |first_name|Vorname|#attributes:...| PHP: ['first_name', 'Vorname', 'attributes' => '...']

skerbis commented 7 years ago

@IngoWinter @alexplusde wurde das bereits in die yform-Doku übernommen?

IngoWinter commented 7 years ago

Ich weiss von nix. Ich hatte das hier nur fix reingeknallt, als es durch Slack ging...

alxndr-w commented 7 years ago

@skerbis nicht, dass ich wüsste. Die Issues in der Doku stapeln sich da ja inzwischen. Ich habe nur im Moment zu viel um die Ohren :/

skerbis commented 6 years ago

@alexplusde @IngoWinter - ich mach hier dicht. Das muss in yform behandelt werden. Scheint mir ein Doku-Part zu sein.

alxndr-w commented 6 years ago

Attribute können alternativ als JSON mitgegeben werden. War mit der #-Schreibweise nie vertraut, ich werde da nichts machen.

skerbis commented 6 years ago

Da es hier issues bei yform gibt, bleibt es closed

skerbis commented 4 years ago

@dergel bitte um Klärung ob diese Nutzung dokumentiert werden sollte

cukabeka commented 4 years ago

Ich finde das super wertvoll für die usability von den pipes in YFORM. Die Keys mitzugeben macht das in der Praxis extrem viel nutzbarer, und ich finde super, wenn diese Möglichkeit irgendwo dokumentiert ist.

alxndr-w commented 4 years ago

@cukabeka was für Keys?

dergel commented 4 years ago

sehr gerne dokumentieren