dev-master
9999999-dev http://cmsx.ruCMSx Form component
MIT
The Requires
- php >=5.3.0
- cmsx/html dev-master
by Igor Osharin
CMSx Form component
Π’ΠΈΠΏΠΎΠ²ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΡ ΠΏΡΠΎΡΠ΅ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅:, (*1)
$f = new \CMSx\Form('myform'); $f->addInput('name', 'ΠΠΌΡ') ->setIsRequired(true); $f->addSelect('city') ->setOptions('ΠΠΎΡΠΊΠ²Π°', 'ΠΠΈΠ΅Π²', 'ΠΠΈΠ½ΡΠΊ') $f->addInput('email', 'E-mail') ->setRegexp('/[some_regexp]/uis');
Π‘Π΅ΠΉΡΠ°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠΈΠΏΠΎΠ²:
* Input - ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅
* Password - ΠΏΠΎΠ»Π΅ ΠΏΠ°ΡΠΎΠ»Ρ
* Hidden - ΡΠΊΡΡΡΠΎΠ΅ ΠΏΠΎΠ»Π΅
* Select - Π²ΡΠ±ΠΎΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² <select>
* Radio - Π²ΡΠ±ΠΎΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² input[type=radio]
* Checkbox - ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΠΊΠ±ΠΎΠΊΡ
* CheckboxListing - Π²ΡΠ±ΠΎΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² input[type=checkbox]
* Textarea - ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅
* Caption - Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ ΡΠ΅ΠΊΡΡ Π±Π΅Π· input'a, (*2)
Π’.Π΅. ΡΠΎΠ·Π΄Π°Π² ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΡΠΌΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ Π½Π΅ΠΌΡ ΠΏΠΎΠ»Ρ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² add* ΡΠΎΠ·Π΄Π°Π΅Ρ Π² ΡΠΎΡΠΌΠ΅ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠ΅Π³ΠΎ ΡΠ²ΠΎΠΈΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ Π½Π°ΡΡΡΠΎΠ΅ΠΊ. ΠΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΠΊΠ»Π°ΡΡ CMSx\Form\Element, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΡΠΎΡ Π½Π°Π±ΠΎΡ., (*3)
Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠΉ ΡΠΎΡΠΌΡ:
* setAction()
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ action;
* setFormAttributes()
- ΠΡΡΠΈΠ±ΡΡΡ Π΄Π»Ρ ΡΠ΅Π³Π° ΡΠΎΡΠΌΡ;
* setSubmitButton($text, $attr = null)
- Π’Π΅ΠΊΡΡ ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ submit;
* setTmpl*()
- Π¨Π°Π±Π»ΠΎΠ½Ρ sprintf()
Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ ΡΠΎΡΠΌΡ., (*4)
ΠΠΎΡΠ»Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΎΡΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ $f->render()
. ΠΡΠ΄Π΅Ρ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ ΡΠ΅Π³ <form>
, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠ° "ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ"., (*5)
ΠΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈ ΡΠΎΡΠΌΡ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² render*. ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°, ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΎΡΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ: $f->field('email')
. ΠΠ»Ρ Π½ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ render()
, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²Π²ΠΎΠ΄Π°, ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ getLabel()
, getIsRequired()
ΠΈ Ρ.ΠΏ., (*6)
ΠΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠΎΡΠΌΡ, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ:
* ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΊ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: setIsRequired()
* ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ: setRegexp()
* ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎ ΡΠΈΠ»ΡΡΡΡ (callback): setFilter()
* ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΠΎΠΏΡΠΈΠΉ: setOptions()
.
ΠΡΠ΅ Π²ΡΠ±ΠΎΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° (select, radiobutton, checkbox listing) Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌ., (*7)
ΠΠ°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΡΠΎΡΠΌΡ ΡΠ΅ΡΠ΅Π· Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° validate()
. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΡ ΠΈ Ρ
ΡΠ°Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΡΠΎΡΠΌΡ:
* isSent()
- ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π° Π»ΠΈ ΡΠΎΡΠΌΠ°;
* isValidated()
- Π·Π°ΠΏΡΡΠΊΠ°Π»Π°ΡΡ Π»ΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ;
* hasErrors()
- Π΅ΡΡΡ Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ;
* isValid()
- Π²Π°Π»ΠΈΠ΄Π½Π° Π»ΠΈ ΡΠΎΡΠΌΠ°, Ρ.Π΅. Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Π»Π°ΡΡ ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅Ρ., (*8)
ΠΡΠ»ΠΈ ΡΠΎΡΠΌΠ° Π²Π°Π»ΠΈΠ΄Π½Π°, Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π½Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ·Π²Π°Π² ΠΌΠ΅ΡΠΎΠ΄ getValues()
ΠΈΠ»ΠΈ getValue($field)
.
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΠ» Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΠΎΠ»Ρ, ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² "ΡΠΈΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅". ΠΠΎΠΊΠ° ΡΠΎΡΠΌΠ° Π½Π΅ Π²Π°Π»ΠΈΠ΄Π½Π°, Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΎΡΠΌΠ΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ "ΡΡΡΡΠ΅" Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ°ΡΠΈΠ²ΡΠΈΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ getTaintedValues()
ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ., (*9)
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠΎΡΠΌΡ ΡΠ΄Π΅Π»Π°Π½Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ. Π’Π°ΠΊ, Π² ΡΠΎΡΠΌΠ΅ ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ init()
, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΡΡ ΠΈ Π΄ΠΎΠ½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ., (*10)
ΠΠ»Ρ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ Ρ ΡΠΎΡΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ process()
Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΡΠΌΡ: ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π½Π° E-mail, ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² Π±Π°Π·Ρ ΠΈ Ρ.ΠΏ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΡΡΠΎ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠ²ΡΠ·Π°Π½Ρ, ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΡΠΎΠ²ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ validateAndProcess()
., (*11)
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΎΡΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ beforeValidation()
ΠΈ afterValidation()
, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π·Π°Π»ΠΎΠΆΠΈΡΡ Π»ΡΠ±ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ. ΠΠ΅ΡΠΎΠ΄ beforeValidation()
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π½Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅., (*12)
Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ HTML ΠΊΠΎΠ΄Π° ΡΠΎΡΠΌΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ sprintf()
Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΡΡΠ΅ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° render*, Π΄Π°ΡΡΠ΅Π΅ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠΎΠ½ΠΊΠΎΠΉ Π΄ΠΎΠ½Π°ΡΡΡΠΎΠΉΠΊΠ΅., (*13)
CMSx Form component
MIT