-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathRadios.php
More file actions
82 lines (68 loc) · 1.62 KB
/
Radios.php
File metadata and controls
82 lines (68 loc) · 1.62 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
<?php
namespace Gregwar\Formidable\Fields;
/**
* Managing a radios group with the same name
*
* @author Grégoire Passault <g.passault@gmail.com>
*/
class Radios extends Field
{
/**
* Children
*/
protected $radios = array();
/**
* Is the value set ?
*/
protected $valueSet = false;
public function __sleep()
{
return array_merge(parent::__sleep(), array(
'valueSet', 'radios'
));
}
public function getRadioForValue($value)
{
foreach ($this->radios as $radio) {
if ($radio->getValue() == $value) {
return $radio;
}
}
return null;
}
public function addRadio(RadioField $radio)
{
$this->radios[] = $radio;
if ($radio->getMappingName()) {
$this->mapping = $radio->getMappingName();
}
$radio->setParent($this);
}
public function setValue($value, $default = false)
{
$this->value = $value;
$this->valueSet = false;
foreach ($this->radios as $radio) {
if ($radio->getValue() == $value) {
$this->valueSet = true;
$radio->setChecked(true);
} else {
$radio->setChecked(false);
}
}
}
public function getValue()
{
return $this->value;
}
public function check()
{
if ($this->required && !$this->valueSet) {
return array('should_check', $this->radios[0]->printName());
}
}
public function __clone()
{
$this->radios = array();
}
}