[html-formfu] Error messages in fields within a Repeatable
Mario Minati
mario.minati at googlemail.com
Wed Jul 29 05:54:05 GMT 2009
michele.gherlone at liceoberchet.it schrieb:
>> michele.gherlone at liceoberchet.it schrieb:
>>
>>> Hello all!
>>> I have set up an application in Catalyst where an action has the
>>> following
>>> form:
>>> ---
>>> indicator: submit
>>> elements:
>>> - type: Repeatable
>>> increment_field_names: 0
>>> nested_name: my_rep
>>> tag: tr
>>> elements:
>>> - type: Block
>>> tag: td
>>> content:
>>> elements:
>>> - type: Label
>>> name: studente
>>> - type: Block
>>> tag: td
>>> content:
>>> elements:
>>> - type: Text
>>> name: voto_orale
>>> constraints:
>>> - type: Regex
>>> regex:
>>> '^ms$|^m$|^suf$|^sc$|^10$|^10-$|^\d\+$|^\d\-$|^\d\.25$|^\d\.50$|^\d\.75$|^\d$'
>>> message: Il voto non e' nel formato corretto...
>>> - type: Text
>>> name: data_orale
>>> constraints:
>>> - type: Regex
>>> regex: '\d{2}\/\d{2}'
>>> message: La data non e' nel formato corretto...
>>> - type: Text
>>> name: comment
>>> - type: Hidden
>>> name: materia_id
>>> - type: Hidden
>>> name: studente_id
>>> - type: Hidden
>>> name: quad
>>> - type: Submit
>>> name: submit
>>> attributes:
>>> value: Registra definitivamente i voti
>>> filter:
>>> - TrimEdges
>>>
>>> The form is populated with a hashref I create from parameters passed by
>>> another form, calling $form->model('HashRef')->default_values($hr). The
>>> Repeatable block works as expected, and I get as many 'tr' as the number
>>> of hashes inside the array @{$hr->{my_rep}}.
>>> However, when $form->has_errors is true, I can see the correct number of
>>> messages, but *ONLY* the first block, while I'd like to get the error
>>> messages along with all the blocks repeated as when the form is rendered
>>> the first time (i.e. when !$form->submitted).
>>> I understand the issue is not simple, and I hope I exposed it as clearly
>>> as possible.
>>> My question is whether it's not possible to achieve my goal, or I am
>>> doing
>>> something wrong, and it IS indeed possible to have multiple error
>>> messages
>>> displayed along with the repeated blocks, in a context like the one I
>>> have
>>> depicted here.
>>> Thank you in advance for the help I really need!
>>> Regards,
>>> Michele Gherlone
>>>
>>>
>>>
>> Hi Michele,
>>
>> I suspect the line
>>
>> increment_field_names: 0
>>
>> to be the reason, that you only see the errors on the first repetition.
>> As formfu has no chance to count the different repetitions without
>> numbered field names.
>>
>> Try it with
>>
>> increment_field_names: 1
>>
>>
>> Greets,
>>
>> Mario Minati
>>
>
> Hello, I tried it with `increment_field_names: 1' but only the constraint
> violation in the 1st block gets recognized, while all subsequents
> violations are silently ignored. So, if I had, say, 4 blocks generated by
> the repeatable with an error in the 4th, this last wrong block data would
> be written to the DB. Moreover, only the 1st block, which contains the
> error is displayed.
> With increment_field_names: 0 I get all errors recognized, but still only
> the first block displayed. Should I maybe try to set default_model:
> HashRef?
> Greets,
> Michele Gherlone
>
Hi Michele,
would you mind creating a test case (that fails) out of your code, that
sets the given parameter values like in the repeatable_repeatable.t test
case I mentioned.
This way I can debug it for you.
Greets,
Mario Minati
More information about the HTML-FormFu
mailing list