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

Alex Povolotsky tarkhil на over.ru
Ср Июн 24 08:02:36 PDT 2015


Спасибо, кэп. На ЭТОЙ машине (а) модуль не был поставлен (б) в списке
компонент не был указан.

Разумеется, все заработало.

On 24.06.2015 12:41, Dmitry L. wrote:
> Если у вас есть такая строчка
> __PACKAGE__->load_components('InflateColumn::Serializer'), то должна.
> 
> 
> 
> 2015-06-24 12:34 GMT+03:00 Alex Povolotsky <tarkhil на over.ru>:
>> Из Client.pm:
>>
>> __PACKAGE__->add_columns(
>>   "id",
>>   {
>>     data_type         => "integer",
>>     is_auto_increment => 1,
>>     is_nullable       => 0,
>>     sequence          => "clients_id_seq",
>>   },
>>   "type",
>>   { data_type => "integer", is_foreign_key => 1, is_nullable => 0 },
>>   "data",
>>   { data_type => "jsonb", is_nullable => 0, serializer_class => "JSON" },
>> );
>>
>> то есть, как я понимаю, сериализация/десериализация должна делаться
>> автоматом.
>>
>> On 23.06.2015 19:18, Dmitry L. wrote:
>>> Так если у вас 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
>>>
>>>
>>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
> 
> 
> 


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