Почему я должен использовать Drupal Form API и Ajax Framework для этого, а не просто реализовывать свое собственное решение с вызовом node_save()?
Я хочу, чтобы пользователи могли отправлять узлы и комментарии через AJAX. Я также хочу сделать довольно обширную настройку узла и формы комментариев.
Я потратил время на просмотр документации и примеров кода для API-интерфейсов форм Drupal 7 и фреймворка Ajax, но нахожу это очень сложным. Поэтому я просто хочу создать свою собственную форму в HTML и использовать свой собственный код JavaScript для отправки ее через Ajax. Я также настрою конкретный URL для обработки этих запросов Ajax, который в конечном итоге вызовет node_save()
или же comment_save()
когда уместно.
Каковы недостатки в том, чтобы делать это таким образом, в отличие от прохождения Form API и Ajax Framework? Я не создаю модули для вклада в сообщество. Все только для моего собственного сайта.
2 ответа
Я предполагаю, что обычный аргумент будет о переносимости, но если вы не собираетесь переносить эти модули на другой сайт Drupal, то, я думаю, это не сработает.
То же самое можно сказать и о том, что вы предлагаете другим модулям возможность изменить вашу форму на основе некоторого глобального / унаследованного параметра, но, опять же, если вы действительно не хотите / не нуждаетесь в этой функциональности, то ее нельзя использовать в качестве аргумента против.
Единственное, что вы потеряете, это встроенная защита от подделки межсайтовых запросов. Пока вы катите свою собственную версию этого, все должно быть в порядке.
Если вы планируете много использовать Drupal, я бы порекомендовал привыкнуть к FAPI, хотя... через некоторое время на самом деле становится намного проще использовать FAPI, чем писать собственный HTML.
Технически, да, вы можете сделать это без вредных последствий. Были времена, когда мне приходилось импортировать данные из фидов и вручную использовать node_save.
Что вам не хватает, так это гибкость, которую предлагает drupal. Например, хотите добавить в форму новый флажок для обозначения выбранного элемента? Теперь вам нужно вручную обновить форму, чтобы добавить поле, и обновить обработчик отправки, чтобы сохранить данные. Если бы вы использовали систему Drupal, она была бы автоматически заполнена для вас.
Что касается гибкости, например, вы решили добавить в форму поле CAPTCHA. Все, что вам нужно сделать, это включить модуль CAPTCHA и указать форму, на которой вы хотите, и это будет сделано для вас. Существует множество сторонних модулей, которые позволяют вам делать такие вещи.
Система форм Drupals также позволяет добавлять более сложные элементы, такие как селекторы дат или даже управляемые загрузки файлов, что может сэкономить много времени, когда вы ознакомитесь с API.
Если вы ищете, чтобы закончить проект и не тратить время на изучение чего-то нового, убедитесь, что вы можете сделать все это вручную. Я могу пообещать вам, что любой разработчик Drupal, который будет смотреть на ваш код в будущем, будет иметь очень низкое мнение о вашей работе. В зависимости от вашей ситуации это может или не может быть важным. Но на самом деле самое большое, чего вам не хватает, - это простота обслуживания и гибкость.
Итак, резюмируем:
плюсы:
- это будет работать
- быстро и просто
- удобный
минусы:
- потеря гибкости
- труднее поддерживать
- неспособность использовать виджеты / помощники друпалов
- невозможность воспользоваться сторонними модулями
- позор от других разработчиков
- Недостаток сна от грязного чувства
- вечное проклятье