-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathField.php
More file actions
223 lines (194 loc) · 4.66 KB
/
Copy pathField.php
File metadata and controls
223 lines (194 loc) · 4.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<?php
/**
* Module de gestion de formulaires
*
* @author Adrien <aimbert@solire.fr>
* @license MIT http://mit-license.org/
*/
namespace Solire\Form;
/**
* Contrôle des formulaires
*
* @author Adrien <aimbert@solire.fr>
* @license MIT http://mit-license.org/
*/
class Field
{
/**
* @var array Règles acceptées par Formulaire
*/
private $rules = [
'test', 'obligatoire', 'erreur', 'renomme', 'designe', 'exception',
'sanitize',
'force', 'egal'
];
/**
* @var string Nom du champ
*/
protected $name;
/**
* @var array Configuration du champ
*/
protected $config = [];
/**
* Règles pour un champ du formulaire
*
* @param string $name Nom du champ
*/
public function __construct($name)
{
$this->name = (string) $name;
}
/**
* Ajoute une règle au dernier champ créé
*
* @param string $ruleName Nom de la règle à ajouter
* @param mixed $value Valeur de l'option
*
* @return self
* @throws Exception si la règle demandée n'existe pas
*/
public function setRule($ruleName, $value)
{
if (!in_array($ruleName, $this->rules)) {
throw new Exception($ruleName . ' n\'est pas une règle formulaire');
}
$this->config[$ruleName] = $value;
return $this;
}
/**
* Supprime une règle
*
* @param string $ruleName Nom de la règle à supprimer
*
* @return self
*/
public function rmRule($ruleName)
{
unset($this->config[$ruleName]);
return $this;
}
/**
* Renvoie le nom de l'attribut GET / POST ou COOKIE du champ
*
* @return string
*/
public function getTargetName()
{
if (isset($this->config['designe'])) {
return $this->config['designe'];
}
return $this->name;
}
/**
* Renvoie le nom de l'attribut de sortie
*
* @return string
*/
public function getFinalName()
{
if (isset($this->config['renomme'])) {
return $this->config['renomme'];
}
return $this->name;
}
/**
* Renvoie le message d'erreur à afficher si le champ n'est pas correcte.
*
* Le message peut être configuré via l'option __erreur__.
* Par défaut le message est le nom du champ
*
* @return string
*/
public function getErrorMessage()
{
if (isset($this->config['erreur'])) {
return $this->config['erreur'];
}
return $this->name;
}
/**
* Indique si le champ possède une personnalisation au niveau de l'exception
*
* @return boolean
*/
public function hasPersonalException()
{
if (!isset($this->config['exception'])) {
return false;
}
if (empty($this->config['exception'])) {
return false;
}
return true;
}
/**
* Renvoie le nom de la classe à utiliser comme exception
*
* @return string
* @throws Exception si aucune exception n'est configurée
*/
public function getPersonalException()
{
if (!isset($this->config['exception']) || empty($this->config['exception'])) {
throw new Exception('Aucune class exception de configurée pour ce champ');
}
return $this->config['exception'];
}
/**
* Indique si le champ est requis
*
* @return boolean
*/
public function isRequired()
{
if (isset($this->config['obligatoire'])) {
return (boolean) $this->config['obligatoire'];
}
return false;
}
/**
* Renvoie un tableau de configuration
*
* @param string $name Nom du champ
*
* @return array
*/
protected function getArrayConfOf($name)
{
if (!isset($this->config[$name])) {
return [];
}
if (is_array($this->config[$name])) {
return $this->config[$name];
}
return explode('|', $this->config[$name]);
}
/**
* Renvoie les noms des testes à effectuer sur le champ
*
* @return array
*/
public function getTests()
{
return $this->getArrayConfOf('test');
}
/**
* Renvoie les noms des nettoyages à faire sur le champ
*
* @return type
*/
public function getSanitizes()
{
return $this->getArrayConfOf('sanitize');
}
/**
* Renvoie les noms des testes d'égalité à effectuer sur le champ
*
* @return array
*/
public function getEgals()
{
return $this->getArrayConfOf('egal');
}
}