Каква е разликата между Drupal формуляри и HTML формуляри

защо използваме "drupal форма", въпреки че можем да направим всичко чрез "HTML форми"?


person Mina Atia    schedule 11.05.2013    source източник


Отговори (2)


API на Drupal Form предоставя стандартизиран метод за показване, валидиране и изпращане на формуляр във вашия Drupal сайт. Той позволява на други модули да взаимодействат с формуляра, който проектирате, и да променят или добавят полета, за да променят поведението на формуляра, ако това е необходимо.

С помощта на API за формуляри получавате изходни формуляри, които са напълно обвити в класове и идентификатори, които вашата тема може да стилизира по начин, който пасва на графичния дизайн на вашия сайт.

API на формуляр извежда формуляр, който е защитен, което означава, че той гарантира, че формулярът, който потребителят изпраща, е генериран от вашия сайт и не е част от фалшива страница, предназначена да захранва злонамерени данни във вашата база данни. Процесът на валидиране позволява на програмиста да дезинфекцира всички данни, за да избегне инжектиране на SQL и други потенциални заплахи за сигурността. Той също така предоставя начин да се избегне много потребители да променят едно и също съдържание по едно и също време.

Също така мисля, че изграждането на формуляр като структуриран масив прави дизайна и поддръжката на формуляра по-прости.

Това са само моите лични акценти относно използването на API за формуляри. Може да искате да прочетете повече на тази връзка в документацията на Drupal Form API.

person pamatt    schedule 11.05.2013

Отговорът на Pamatt е добре написан, но тъй като въпросът ви не е много конструктивен/категоричен, се опитвам да добавя някои липсващи точки.

защо използваме "drupal форма", въпреки че можем да правим всичко чрез "HTML форми"?

Няма такова нещо "Drupal форми". Те все още използват същите тагове <input>, <select> и т.н. и всичко все още е HTML. Но на модулите се дава възможност да променят формата без да бъркат с HTML.

Ето нормална Drupal форма:

 $form['text'] = array(
    '#type' => 'textfield',
    '#maxlength' => 120, 
    '#title' => t('Name'),
 );

Това е просто PHP масив и ако искате да промените максималната дължина, можете лесно да го направите. Ами ако беше <input name="text" maxlength="120" />? Ако конкретен модул иска да го промени, трябва да използвате някакъв регулярен израз, за ​​да направите това.

Освен това формулярите, генерирани от API на Drupal Form, могат да имат *допълнителни** функции за валидиране, както и функции за изпращане.

**extra:* Съгласно примера по-горе, не е необходимо да потвърждавате, че дължината на текста не е повече от 120. Някой може да редактира HTML и да изпрати 200 знака за това поле, но API на формуляр може да го откаже. API на формуляр може да извършва основни валидации, като например да се увери, че задължителните полета са попълнени, максималната дължина не е превишена, заявката е CSRF безопасна, стойността на избрания списък действително е в разрешения списък и т.н.

Ако настоявате, че трябва да използвате необработени HTML формуляри, трябва да добавите свои собствени токени за формуляри, кешове, валидатори на данни и т.н. Когато сте готови, ще разберете, че това вече е направено и е получило името „Form API“.

person AKS    schedule 11.05.2013