1HTML::FormHandler::ManuUasle:r:FCroonmtFrFi(b3u)ted PerlHTDMoLc:u:mFeonrtmaHtainodnler::Manual::FromFF(3)
2
3
4

NAME

6       HTML::FormHandler::Manual::FromFF - converting from HTML::FormFu
7

VERSION

9       version 0.40068
10

SYNOPSIS

12       Manual Index
13
14       Cheatsheet for converting from HTML::FormFu.
15

DESCRIPTION

17       Information that may be useful when converting to FormHandler from
18       FormFu.
19
20   Inside/Outside
21       FormFu forms look to me like "inside-out" objects. The attributes and
22       code are all set outside of the object. FormHandler forms are the
23       opposite. Almost all attributes and settings are set *inside* the form
24       class, although settings can be passed in on 'new' and 'process', of
25       course. FormHandler fields are built as part of the object construction
26       process, so you do not create or add new fields after the form instance
27       has been constructed. There are many facilities for setting fields
28       active/inactive or changing the various field attributes, so this is
29       not limiting in what you can do.
30
31       One of the big advantages of having form fields and validations, etc,
32       inside the object is that it makes it a lot easier to test exactly what
33       you're using in your controllers.
34
35   Config files
36       There are so many drawbacks to using config files to specify your forms
37       that I don't see why anybody would voluntarily do it. However it takes
38       all kinds, so if you really want to use config files, you can...mostly.
39       There are a lot of things you can't do in config files, but FormHandler
40       provides so many ways of doing things, that you can probably get it to
41       work. And sometimes it's easier to update forms piecemeal, or there may
42       be policies in place, so if you really want/need config files for
43       building forms, see HTML::FormHandler::Foo and the test in
44       t/form_setup/config.t.
45
46   Rendering
47       You should be able to make your FormHandler forms automatically render
48       very close to FormFu's rendering. There's an example of simple FormFu-
49       like rendering in t/render/ff.t. Set up a base class with the necessary
50       code, and your forms could be practically drop-in replacements from a
51       rendering perspective.
52

Filters, Constraints, Inflators, Validators, Transformers

54       FormHandler doesn't distinguish between these categories in the same
55       way that FormFu does. FormHandler has inflation/deflation, validation
56       methods, and apply actions. The distinguishing factor is mostly where
57       it happens in the process.
58
59   Filters
60       A 'trim' filter is installed by default in FormHandler; it's a special
61       version of an apply action, and can be set to a transform or Moose
62       type. See the documentation in HTML::FormHandler::Field#trim.
63
64       An HTML filter is applied by default in certain places in the
65       rendering.  You can change it with the 'render_filter' attribute. See
66       HTML::FormHandler::Manual::Rendering#Rendering-filter.
67
68       You can change the form of the field's value using a number of
69       inflation/deflation methods, or a transform, or a Moose type.  See
70       HTML::FormHandler::Manual::InflationDeflation and
71       HTML::FormHandler::Manual::Validation.
72
73       Transforms and inflations/deflations do not change what is presented in
74       the form unless you set the 'fif_from_value' flag on the field (the
75       rough equivalent of FormFu's 'render_processed_value').
76
77       FormatNumber
78
79       Use an inflation:
80
81           has_field 'foo' => ( type => 'PosInteger', inflate_method => \&format_number );
82           sub format_number {
83               my ( $self, $value ) = @_;
84               return unformat_number( $value );
85           }
86
87   Constraints
88       A lot of these are simple regexes or functions. If they're things
89       you're going to use often, you probably want to put them in a type
90       library or validator class.
91
92       AllOrNone
93           Not implemented. Do this in a form 'validate' sub.
94
95       ASCII
96           A simple regex:
97
98              has foo => ( apply => [  { check => qr/^\p{IsASCII}*\z/,
99                  message => 'Not a valid string' } ] );
100
101       AutoSet
102           Not necessary. This is done automatically by FormHandler. You'd
103           have to go to some work to avoid it.
104
105       Bool
106           A simple regex:
107
108               qr/^[01]?\z/
109
110           Or you can use the Boolean field.
111
112       Callback, CallbackOnce
113           This is just validation done in code. Use one of the many places
114           you can put validation in methods in FormHandler. See
115           HTML::FormHandler::Manual::Validation.
116
117       DateTime
118           Use Date or DateTime field or make your own.
119
120       DependOn
121           Use 'dependency' attribute in the form. Or do more complicated
122           things in the form's 'validate' sub.
123
124       Email
125           Use the 'Email' field type, or use the FH Moose Type, 'email'.
126
127                has_field 'email' => ( type => 'Email' );
128                -- or --
129                use HTML::FormHandler::Types ('Email');
130                has_field 'email' => ( apply => [ Email ] );
131
132       Equal
133           No equivalent. Perform this check in the form's 'validate' sub.
134
135       File
136           Use 'Upload' field.
137
138       Integer
139           Use 'Integer' field.
140
141       Length, MaxLength, MinLength
142           Use 'minlength' and 'maxlength' on the Text field and its
143           subclasses.
144
145       Range, MaxRange, MinRange
146           Use 'range_start' and 'range_end'.
147
148       MinMaxFields
149           No equivalent.
150
151       Number
152           Use Moose type 'Num'.
153
154       Printable
155           Use FormHandler Moose type 'Printable'.
156
157       reCAPTCHA
158           Use Captcha field or HTML::FormHandlerX::Field::reCAPTCHA.
159
160       Regex
161           Use 'check' action with regex.
162
163       Required
164           Set 'required' flag on the field.
165
166       Set Use 'check' action with arrayref of strings.
167
168       SingleValue
169           Not necessary.
170
171       Word
172           This is a simple regex:
173
174               qr/^\w*\z/
175
176           Substitute FormHandler Moose type 'SingleWord'.
177
178   Inflators
179       Use one of the inflation/deflation methods. See
180       HTML::FormHandler::Manual::InflationDeflation.
181
182   Validators
183       See HTML::FormHandler::Manual::Validation.
184
185   Transformers
186       See HTML::FormHandler::Manual::InflationDeflation and
187       HTML::FormHandler::Manual::Validation.
188

AUTHOR

190       FormHandler Contributors - see HTML::FormHandler
191
193       This software is copyright (c) 2017 by Gerda Shank.
194
195       This is free software; you can redistribute it and/or modify it under
196       the same terms as the Perl 5 programming language system itself.
197
198
199
200perl v5.36.0                      2023-01-2H0TML::FormHandler::Manual::FromFF(3)
Impressum