Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

YForm Pipe Notation Syntax #19

Open
IngoWinter opened this issue Feb 13, 2017 · 10 comments
Open

YForm Pipe Notation Syntax #19

IngoWinter opened this issue Feb 13, 2017 · 10 comments
Assignees

Comments

@IngoWinter
Copy link
Member

IngoWinter commented Feb 13, 2017

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||[email protected]

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
Copy link
Member

skerbis commented Jul 14, 2017

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

@IngoWinter
Copy link
Member Author

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

@alxndr-w
Copy link
Member

@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
Copy link
Member

skerbis commented Jan 28, 2018

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

@skerbis skerbis closed this as completed Jan 28, 2018
@alxndr-w
Copy link
Member

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

@skerbis
Copy link
Member

skerbis commented Jan 28, 2018

Da es hier issues bei yform gibt, bleibt es closed

@skerbis
Copy link
Member

skerbis commented Nov 20, 2019

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

@cukabeka
Copy link
Member

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
Copy link
Member

@cukabeka was für Keys?

@dergel
Copy link
Member

dergel commented Nov 21, 2019

sehr gerne dokumentieren

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants