2010-03-24 5 views
2

Я создаю фреймворк, который будет проверять формы как на стороне клиента (javascript), так и на стороне сервера на основе спецификации требований к форме, написанной на json.Спецификация требований к форме HTML

Цель состоит в том, чтобы избавиться от логически эквивалентного кода на сервере и клиенте, чтобы сделать код более удобным для обслуживания, быстрее писать и менее ошибочным.

Формат спецификации может выглядеть примерно так:

{ '<field_name>' : ['<validation_function>', 'req', ['<requirement>', <param>], ...], ... } 

(список требований упорядочено, так что пользователь может получить большинство основных сообщений об ошибках во-первых, «REQ» требование должно прийти первым, если он существует, и средство что поле обязательно для заполнения)

например)

{ 
    'name' : ['string', 'req', ['min',6], ['max',150], ['match', /^[\sa-z0-9ÅÄÖåäö&]$/i], ['not_match', /^tmp_/]], 
    'email' : ['email', 'req'], 
    'email_confirm' : ['same_as', 'email'], 
    'password' : ['string', 'req', ['min', 6], ['max', 64], ['match', /^[a-z0-9\[email protected]#\$%^&*_+.]$/i] ], 
} 

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

ответ

0

Я знаю, что Django также имеет систему проверки. Но это происходит и в фоновом режиме.

Но что, если исходный адрес является единственным местом, где можно узнать, являются ли введенные данные действительными? Возможно, пользователь этой системы проверки хочет убедиться, что адрес электронной почты еще не используется, например, для другой учетной записи. Тогда эта проверка не может произойти на стороне клиента.

+0

Да некоторые проверки могут быть сделаны только на стороне сервера. Но я только пытаюсь решить проблему с проверками, которые должны выполняться как на стороне клиента, так и на стороне сервера. Нет дублирования кода для проверки только на стороне сервера. – Peder

+0

Очень хорошая идея. Я не могу дать вам хороший ответ на ваш вопрос, кроме как сказать, что ваша идея хорошая! – mojbro

0

Рассматривали ли вы повторное использование проверки подлинности через XMLHttpRequest и возвращали какие-либо сведения об ошибке, поскольку JSON подходит для простого обновления формы для отображения ошибок? Саймон Уиллисон поставил example of doing so с использованием превосходного модуля Django django.forms в своей презентации Advanced Django (от слайда 56).

Приятно, как это, я также хотел бы поцарапать тот же самый зуд, который вызывает ваш вопрос, поэтому я начал porting django.forms to JavaScript in js-forms, что довольно далеко, но также далеки от готового к его предполагаемому использованию, которое использует одна и та же базовая кодовая база для выполнения соответствующих проверок на интерфейсе и бэкэнд с использованием тех же определений объектов Form.

+0

Отправка запросов проверки ajax на сервер является медленной и расточительной для большинства целей проверки. Спасибо за ссылку на ваш проект и django.forms api. Это выглядит интересно. – Peder

0

Но но ... были способы сделать вложенные модели/формы в рельсах раньше, а в версии 2.3 он получил хорошую поддержку, не так ли?

См rails 2.3 releasenotes (#nested object forms))

Не то, что все используют рельсы, конечно :)

+0

Улучшение форм вложенных объектов выглядит интересным. Спасибо за эту ссылку. Однако я до сих пор не знаю, как создавать требования к многостраничным формам с использованием системы проверки правильности Rails. И как я могу получить фреймворк Rails для генерации jquery-совместимой проверки javascript? – Peder

Смежные вопросы