depage-forms
v2.0.0
html forms made easy
Toggle main menu visibility
Loading...
Searching...
No Matches
Address.php
Go to the documentation of this file.
1
<?php
2
9
10
namespace
Depage\HtmlForm\Elements
;
11
40
class
Address
extends
Fieldset
41
{
42
protected
$props
= [];
43
protected
$propsMaxLength
= [];
44
protected
$prefix
=
''
;
45
protected
$labelAddress1
;
46
protected
$labelAddress2
;
47
protected
$labelCity
;
48
protected
$labelState
;
49
protected
$labelZip
;
50
protected
$labelCountry
;
51
60
public
function
__construct
(
string
$name
, array $parameters,
object
$form
)
61
{
62
parent::__construct(
$name
, $parameters,
$form
);
63
64
$this->props = [
65
'Address1'
,
66
'Address2'
,
67
'Zip'
,
68
'City'
,
69
'Country'
,
70
'State'
,
71
];
72
$this->propsMaxLength = [
73
'Address1'
=> 255,
74
'Address2'
=> 255,
75
'Zip'
=> 45,
76
'City'
=> 255,
77
'VatId'
=> 60,
78
];
79
80
81
if
(isset($parameters[
'props'
])) {
82
$this->props = $parameters[
'props'
];
83
}
84
foreach
($this->props as $prop) {
85
if
(isset($parameters[
"default$prop"
])) {
86
$this->defaults[
"default$prop"
] = $parameters[
"default$prop"
];
87
}
88
}
89
90
$this->defaults[
'priorityCountries'
] = isset($parameters[
'priorityCountries'
])
91
? $parameters[
'priorityCountries'
]
92
: [];
93
94
$this->prefix = isset($parameters[
'prefix'
])
95
? rtrim($parameters[
'prefix'
],
'_'
) .
'_'
96
:
''
;
97
}
98
108
protected
function
setDefaults
(): void
109
{
110
parent::setDefaults();
111
112
$this->defaults[
'required'
] =
false
;
113
$this->defaults[
'labelAddress1'
] = _(
"Address 1"
);
114
$this->defaults[
'labelAddress2'
] = _(
"Address 2"
);
115
$this->defaults[
'labelCity'
] = _(
"City"
);
116
$this->defaults[
'labelState'
] = _(
"State"
);
117
$this->defaults[
'labelZip'
] = _(
"Zip"
);
118
$this->defaults[
'labelCountry'
] = _(
"Country"
);
119
}
120
126
public
function
addChildElements
(): void
127
{
128
parent::addChildElements();
129
130
foreach
($this->props as $prop) {
131
if
(isset($this->defaults[
"default$prop"
])) {
132
$labelVar =
"label$prop"
;
133
134
if
($prop ==
"State"
) {
135
$this->addState($this->prefix .
"state"
, [
136
'label'
=> $this->labelState,
137
'defaultValue'
=> $this->defaults[
'defaultState'
],
138
//'required' => $this->required,
139
]);
140
} elseif ($prop ==
"Country"
) {
141
$this->addCountry($this->prefix .
"country"
, [
142
'label'
=> $this->labelCountry,
143
'priorityCountries'
=> $this->defaults[
'priorityCountries'
],
144
'defaultValue'
=> $this->defaults[
'defaultCountry'
],
145
'required'
=> $this->required,
146
]);
147
}
else
{
148
$this->addText($this->prefix . strtolower($prop), [
149
'label'
=> $this->$labelVar,
150
'maxlength'
=> $this->propsMaxLength[$prop],
151
'defaultValue'
=> $this->defaults[
"default$prop"
],
152
'required'
=> $prop !=
"Address2"
&& $this->required,
153
]);
154
}
155
}
156
}
157
}
158
164
public
function
validate
(): bool
165
{
166
if
(parent::validate() && isset($this->defaultCountry) && isset($this->defaultState)) {
167
// check selected state matches the country
168
$country_states = state::getStates();
169
$country = $this->
getElement
(
"{$this->prefix}country"
);
170
$state = $this->
getElement
(
"{$this->prefix}state"
);
171
$this->valid = isset($country_states[$country->getValue()][$state->getValue()]);
172
if
(!$this->valid) {
173
$state->errorMessage = _(
"State and Country do not match"
);
174
$state->valid =
false
;
175
}
176
177
// TODO validate zip code
178
}
179
180
return
$this->valid
;
181
}
182
}
183
184
/* vim:set ft=php sw=4 sts=4 fdm=marker et : */
Depage\HtmlForm\Abstracts\Container\getElement
getElement(string $name, bool $includeFieldsets=false)
Gets subelement by name.
Definition
Container.php:200
Depage\HtmlForm\Abstracts\Element\$valid
$valid
Contains element validation status/result.
Definition
Element.php:41
Depage\HtmlForm\Abstracts\Element\$name
$name
Element name.
Definition
Element.php:36
Depage\HtmlForm\Elements\Address
Default address fieldset.
Definition
Address.php:41
Depage\HtmlForm\Elements\Address\$prefix
$prefix
Definition
Address.php:44
Depage\HtmlForm\Elements\Address\$propsMaxLength
$propsMaxLength
Definition
Address.php:43
Depage\HtmlForm\Elements\Address\$labelZip
$labelZip
Definition
Address.php:49
Depage\HtmlForm\Elements\Address\addChildElements
addChildElements()
adds address-inputs to fieldset
Definition
Address.php:126
Depage\HtmlForm\Elements\Address\validate
validate()
Validate the address data.
Definition
Address.php:164
Depage\HtmlForm\Elements\Address\$labelAddress1
$labelAddress1
Definition
Address.php:45
Depage\HtmlForm\Elements\Address\$labelCountry
$labelCountry
Definition
Address.php:50
Depage\HtmlForm\Elements\Address\__construct
__construct(string $name, array $parameters, object $form)
multiple class constructor
Definition
Address.php:60
Depage\HtmlForm\Elements\Address\$labelAddress2
$labelAddress2
Definition
Address.php:46
Depage\HtmlForm\Elements\Address\$labelState
$labelState
Definition
Address.php:48
Depage\HtmlForm\Elements\Address\$props
$props
Definition
Address.php:42
Depage\HtmlForm\Elements\Address\setDefaults
setDefaults()
collects initial values across subclasses.
Definition
Address.php:108
Depage\HtmlForm\Elements\Address\$labelCity
$labelCity
Definition
Address.php:47
Depage\HtmlForm\Elements\Fieldset
The fieldset class holds HTML-fieldset specific attributes and methods.
Definition
Fieldset.php:52
Depage\HtmlForm\Elements\Fieldset\$form
$form
parent HTML form.
Definition
Fieldset.php:56
Depage\HtmlForm\Elements
Classes for HTML input-elements.
Definition
Address.php:10
Elements
Address.php
Generated on
for depage-forms by
doxygen
1.18.0
For an overview of all docs, go to
docs.depage.net