Промяна на състоянието на формата в Drupal 7
Не е необичайно елементите от тази форма да се появяват/изчезват/променят в зависимост от щракването на елемент върху формуляра. И ако за обикновени полета това може да се направи с модула условни полета, то за вашите формуляри ще трябва да напишете всичко сами. В Drupal това може да стане чрез ajax (можете да прочетете за това по-подробно тук) или чрез параметъра #states в API за формуляри. И сега ще говорим за втория вариант.
така, #states. Всъщност това е PHP обвивка за най-простите функции. jQuery, които променят състоянието на формата при извършване на предварително определени действия с нея.
Състояние на артикула #states е асоциативен масив като този:
Състои се от набор от състояния на елементи, които могат да се променят за определени състояния на други елементи на страницата (селектори могат да бъдат посочени за елементи извън формата!). Най-простият пример:
За тези, които обичат да знаят как работи всичко
При добавяне на атрибут към формуляр #states Drupal свързва библиотеката от ядрото drupal.states (misc/States.js) и също така добавя настройки към страницата за последваща обработка на елементи. За примера по-горе в кода на страницата можете да намерите следния ред:
Следваща библиотека drupal.states взема тези настройки и задава събития jQuery за избрани селектори.
Възможни стойности на състоянието
Списък на състоянията, които могат да бъдат приложени към елемент:
- активиран - елементът ще бъде достъпен за промени през браузъра.
- хора с увреждания - елементът няма да бъде достъпен за редактиране.
- задължително - артикулът ще стане задължителен.
- по избор - елементът ще стане незадължителен.
- видими - елемент ще бъде показан.
- невидим - елементът ще бъде скрит.
- проверено - артикулът ще бъде проверен (щракнат).
- неотметнато - елементът е отметнат.
- разширен - елементът ще бъде разширен (за набори от полета).
- рухна - елементът ще бъде свит (за набори от полета).