[Moscow.pm] HTML::FormHandler, JSON, динамические формы: делал ли кто уже?

Dmitry L. dim0xff на gmail.com
Вт Июн 23 09:18:08 PDT 2015


Так если у вас InflateColumn, то вам явно нужно сделать
->set_inflated_columns для объекта модели.

Я обычно переопределял update_model из HTML::FormHandler::TraitFor::Model::DBIC


2015-06-23 18:15 GMT+03:00 Alex Povolotsky <tarkhil на over.ru>:
> HTML::FormHandlerX::Field::JSON - совсем не то. Он подстраивает вывод
> под json, а у меня форма строго определенная.
>
> Вообще, я пытаюсь связать HTML::FormHandler с DBIx::Class и
> DBIx::Class::InflateColumn::Serializer, но, если я не пытаюсь явно
> превратить хэш в json до передачи в модель, то
>
> SQL::Abstract::belch(): [SQL::Abstract::__ANON__] Warning: HASH ref as
> bind value in insert is not supported at
> /usr/local/lib/perl5/site_perl/HTML/FormHandler/TraitFor/Model/DBIC.pm
> line 85
> INSERT INTO clients ( data, type) VALUES ( ?, ? ) RETURNING id:
> 'HASH(0x80d751528)', '1'
>
>
> а если пытаюсь, то
>
> [Tue Jun 23 18:08:34 2015] [error] Can't use string
> ("{"region":null,"full_name":null,"...) as a HASH ref while "strict
> refs" in use at
> /usr/local/lib/perl5/site_perl/HTML/FormHandler/InitResult.pm line 144.
>
>
> On 23.06.2015 17:59, Dmitry L. wrote:
>> А для чего вы используете HFH? Валидация и рендер форм? Или только валидация?
>>
>> Если только для валидации, то никакой HFH::Field::JSON вам, наверное,
>> не нужен. Достаточно Compound.
>> Если кроме валидации ещё и формы рендерите, то посмотрите на
>> HTML::FormHandlerX::Field::JSON .
>>
>> Сам я отказался от HFH, из-за его тормознутости на Repeatable полях, и
>> сделал свой вариант https://github.com/dim0xff/p5-Form-Data-Processor
>> (но там только валидатор).
>> А эта штука https://github.com/dim0xff/p5-Form-Data-Processor-Field-Subforms
>> позволяет делать то, что вы хотите (типа, в зависимости от поля type
>> подставлять валидатор под данные, которые находятся в Compound поле
>> data)
>>
>> 2015-06-23 17:48 GMT+03:00 Alex Povolotsky <tarkhil на over.ru>:
>>> Велосипед в том, что у кого-то HTML::FormHandler::Field::JSON уже
>>> написан, просто до CPAN руки не дошли.
>>>
>>> Аналогично - с FH-классом для динамических форм с переключателем
>>>
>>> Грабли - я вроде бы пока никаких не вижу) но вдруг у меня кочка зрения
>>> неправильная?
>>>
>>> json в реляционной БД - говорят, вполне работает, и пошустрее, чем в
>>> иных NoSQL.
>>>
>>> On 23.06.2015 17:45, Dmitry L. wrote:
>>>> А в чём велосипед и какие грабли могут быть (я сейчас про сторону
>>>> перла говорю, а не про хранение json в реляционной бд)?
>>>>
>>>> 2015-06-23 17:29 GMT+03:00 Alex Povolotsky <tarkhil на over.ru>:
>>>>> Добрый вечер
>>>>>
>>>>> Есть задача (вполне классическая) - хранить базу клиентов. Система
>>>>> пишется на Mojolicious.
>>>>>
>>>>> Клиенты, естественно, бывают юридическими и физическими лицами.
>>>>>
>>>>> Возникла идея - пользуясь возможностями JSON в новом постгресе, хранить
>>>>> в базе внутренний номер клиента, тип и все остальные данные в JSON, по
>>>>> которому, при необходимости, и искать.
>>>>>
>>>>> Очевидная следующая идея - сделать компаунд-поле типа JSON, которое
>>>>> будет свертывать сериализатором все поля, при необходимости валидируя
>>>>> их, и динамическую форму с использованием HTML::FormHandler и
>>>>> обобщенного механизма создания "полей с JSON". Как мне кажется, штука
>>>>> может получиться неплохо повторно используемая.
>>>>>
>>>>> Делал ли кто-нибудь что-нибудь подобное? Возможно, я изобретаю велосипед
>>>>> или, наоборот, собираюсь гулять по полю самозарядных граблей?
>>>>>
>>>>> Alex
>>>>> --
>>>>> Moscow.pm mailing list
>>>>> moscow-pm на pm.org | http://moscow.pm.org
>>>>
>>>>
>>>>
>>> --
>>> Moscow.pm mailing list
>>> moscow-pm на pm.org | http://moscow.pm.org
>>
>>
>>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



-- 
//wbr, Dmitry L.


Подробная информация о списке рассылки Moscow-pm