FriendsOfREDAXO / FriendsOfREDAXO/tricks

YForm Pipe Notation Syntax

Open
#19 10 comments 2 reactions 1 assignee Claimed by @dergel View on GitHub
Add to Docs
Dominant language
SCSS
Stars
112
Forks
31
Avg merge
23h 3m
Merged PRs (30d)
3

Description

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|

|

|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' => '...']`

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.