Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Обсуждений тред (https://javascript.ru/forum/offtopic/47364-obsuzhdenijj-tred.html)

nerv_ 14.08.2016 14:19

Возник вопрос по работе с формами на стороне сервера (koa/express). Требуется програмный механизм создания, валидации, рендеринга формы. Приведу пример из php. Там есть такая штука, как Zend_Form, которая все это умеет. Выглядит как-то так

$form = $this->getBaseForm();
$form
  ->addElement('text', 'title', 
    array(
      'label' => 'Название',
      'required' => true
    )
  )
  ->addElement('textarea', 'text', 
    array(
      'label' => 'Текст',
      'cols' => 65,
      'rows' => 2
    )
  )->addElement('file', 'image', 
    array(
      'label' => 'Изображение 960x340'
    )
  )
  ->addElement('text', 'link', 
    array(
      'label' => 'Ссылка для перехода'
    )
  )->addElement('submit', 'submit', 
    array(
      'label' => 'Сохранить'
    )
  );


в шаблоне
Код:

{$form}
Есть какие-нибудь подобные модули для koa/express? Можно отдельные, но, желательно, чтобы они хорошо интегрировались между собой

destus 14.08.2016 14:37

nerv_,
Сам не использовал, но выглядит симпатично https://github.com/caolan/forms

nerv_ 14.08.2016 16:27

destus, спасибо, суть ты уловил верно.

Цитата:

Сообщение от destus
Сам не использовал, но выглядит симпатично https://github.com/caolan/forms

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

This code is still in its infancy
но, похоже, альтернатив нет и это грустно :(

Скажу так: первый, кто запилит подобный пакет, будет молодец и соберет мнгого лайков на гитхабе.

---

UPD
В зенде на мой взгляд достаточно хорошее продуманное апи, можно писать на его основе https://framework.zend.com/manual/1....uickstart.html

По сути требуется объединить ряд пакетов:
- создание (писать руками)
- парсинга (formidable?) (не уверен, что этот пункт нужен)
- валидации (использовать сторонние пакеты, предусмотреть асинхронную валидацию)
- рендеринга (добавить возможность использовать движка шаблонов)
в одно удобное апи

trikadin 15.08.2016 16:28

nerv_

1) Возьми json-схему, на стороне сервера валидируй ею данные, которые пришли, на стороне клиента -- возьми генератор формы по ней (тысячи их, и под ангуляр, и под реакт, и под jquery, и вообще под что угодно).
2) Совмести.
3) ??????
4) PROFIT!

nerv_ 15.08.2016 22:26

Цитата:

Сообщение от trikadin
1) Возьми json-схему, на стороне сервера валидируй ею данные, которые пришли, на стороне клиента -- возьми генератор формы по ней (тысячи их, и под ангуляр, и под реакт, и под jquery, и вообще под что угодно).

1) я тебе говорю, что мне нужно разметку на сервере генерировать
2) не вижу тысяч
:)

UPD
После долгих поисков по npm нашел несколько:
https://www.npmjs.com/package/jsonschema2html
https://www.npmjs.com/package/jsonschema2form-nested
https://www.npmjs.com/package/json-editor
https://www.npmjs.com/package/iso-form
https://github.com/brutusin/json-forms

trikadin 15.08.2016 23:09

Цитата:

Сообщение от nerv_
я тебе говорю, что мне нужно разметку на сервере генерировать

Т. е. клиентской логики у тебя там нет вообще? Никак данные на клиенте не валидируешь и никакие кастомные поля ввода не добавляешь?

Цитата:

Сообщение от nerv_
не вижу тысяч

112 тыс. результатов :)

nerv_ 16.08.2016 18:47

Цитата:

Сообщение от trikadin
Т. е. клиентской логики у тебя там нет вообще? Никак данные на клиенте не валидируешь и никакие кастомные поля ввода не добавляешь?

В данном случае практически нет

Цитата:

Сообщение от trikadin
112 тыс. результатов

из которых 5 полезных, что составляет
alert(5/1120);

у меня, кстати, написано 170k результатов

trikadin 16.08.2016 23:32

Цитата:

Сообщение от nerv_
В данном случае практически нет

Сделай серверную рендерилку форм по JSON-схеме на Snakeskin :D Сообщество тебе спасибо скажет.

kobezzza 17.08.2016 00:11

Цитата:

Сделай серверную рендерилку форм по JSON-схеме на Snakeskin
Дык, ты же вроде писал, что у себя в проекте уже такое написал, не?)

trikadin 17.08.2016 02:07

Цитата:

Сообщение от kobezzza
Дык, ты же вроде писал, что у себя в проекте уже такое написал, не?)

У меня на Vue, сорян) И дальше прототипа оно так и не ушло...


Часовой пояс GMT +3, время: 20:31.