2017 © Pedro PelΓ‘ez
 

library form

CMSx Form component

image

cmsx/form

CMSx Form component

  • Saturday, February 22, 2014
  • by cmsx
  • Repository
  • 1 Watchers
  • 0 Stars
  • 50 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ настройка Ρ„ΠΎΡ€ΠΌΡ‹

Π’ΠΈΠΏΠΎΠ²ΠΎΠ΅ созданиС Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:, (*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)

The Versions

22/02 2014

dev-master

9999999-dev http://cmsx.ru

CMSx Form component

  Sources   Download

MIT

The Requires