Спецификация требований к HTML-форме - PullRequest
2 голосов
/ 24 марта 2010

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

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

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

{ '<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\!@#\$%^&*_+.]$/i] ],
}

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

Ответы [ 3 ]

0 голосов
/ 24 марта 2010

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

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

0 голосов
/ 24 марта 2010

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

См. rails 2.3 releasenotes (#nested объект формы))

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

0 голосов
/ 24 марта 2010

Я знаю, что у Django тоже есть структура валидации. Но это происходит и в бэк-энде.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...