В чем разница между формами drupal и формами HTML

почему мы используем «форму drupal» Хотя мы можем делать все с помощью «форм HTML»?


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


Ответы (2)


Drupal Form API предоставляет стандартизированный метод для отображения, проверки и отправки формы на вашем сайте Drupal. Это позволяет другим модулям взаимодействовать с формой, которую вы разрабатываете, и изменять или добавлять поля для изменения поведения формы, если это необходимо.

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

Form API выводит безопасные формы, что означает, что форма, которую отправляет пользователь, создается вашим сайтом и не является частью фиктивной страницы, предназначенной для передачи вредоносных данных в вашу базу данных. Процесс проверки позволяет программисту очистить любые данные, чтобы избежать внедрения SQL и других потенциальных угроз безопасности. Это также позволяет избежать одновременного изменения одного и того же содержимого несколькими пользователями.

Я также думаю, что построение формы в виде структурированного массива упрощает проектирование и обслуживание формы.

Это только мои личные заметки об использовании form API. Вы можете прочитать больше по этой ссылке в документации Drupal Form API.

person pamatt    schedule 11.05.2013

Ответ Паматта хорошо написан, но поскольку ваш вопрос не очень конструктивный/определенный, я пытаюсь добавить некоторые недостающие моменты.

почему мы используем «форму drupal» Хотя мы можем делать все с помощью «форм HTML»?

Нет такого понятия "формы Drupal". Они по-прежнему используют те же теги <input>, <select> и т. д., и все по-прежнему HTML. Но модулям предоставляется возможность изменять форму без нарушения HTML.

Вот обычная форма Drupal:

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

Это всего лишь массив PHP, и если вы хотите изменить максимальную длину, вы можете легко это сделать. Что, если бы это было <input name="text" maxlength="120" /> ? Если конкретный модуль хотел изменить его, для этого вам нужно использовать какое-то регулярное выражение.

Кроме того, формы, сгенерированные Drupal Form API, могут иметь *дополнительные** функции проверки, а также функции отправки.

**дополнительно:* Как и в приведенном выше примере, вам не нужно проверять, что длина текста не превышает 120. Кто-то может отредактировать HTML и отправить 200 символов для этого поля, но API формы может отказать в этом. Form API может выполнять основные проверки, такие как проверка того, что обязательные поля заполнены, максимальная длина не превышена, запрос безопасен для CSRF, значение списка выбора действительно находится в списке разрешенных и т. д.

Если вы настаиваете на том, что вам нужно использовать необработанные HTML-формы, вы должны добавить свои собственные токены форм, кеши, средства проверки данных и т. д. Когда вы закончите, вы обнаружите, что это уже сделано и получило имя «Form API».

person AKS    schedule 11.05.2013