-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRadioButtonGroup.php
90 lines (77 loc) · 1.98 KB
/
RadioButtonGroup.php
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
<?php
declare(strict_types=1);
/**
* This file is part of the EaseTWBootstrap3 package
*
* https://github.com/VitexSoftware/php-ease-twbootstrap
*
* (c) Vítězslav Dvořák <http://vitexsoftware.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Ease\TWB;
class RadioButtonGroup extends \Ease\Container
{
/**
* Jméno.
*/
public string $name = null;
/**
* Typ.
*/
public bool $inline = false;
/**
* Položky k zobrazení.
*/
public array $radios = [];
/**
* Předvolená hodnota.
*/
public string $checked = null;
/**
* Zobrazí pole radiobuttonů.
*
* @param string $name
* @param array $radios pole Hodnota=>Popisek
* @param string $checked
* @param bool $inline
*/
public function __construct($name, $radios, $checked = null, $inline = false)
{
$this->name = $name;
$this->checked = $checked;
$this->inline = $inline;
$this->radios = $radios;
parent::__construct();
}
/**
* Seskládá pole radiobuttonů.
*/
public function finalize(): void
{
$class = 'radio';
if ($this->inline) {
$class .= '-inline';
}
$pos = 1;
foreach ($this->radios as $value => $caption) {
if ($value === $this->checked) {
$checked = 'checked';
} else {
$checked = null;
}
$tagProperties = ['id' => $this->name.$pos++, 'name' => $this->name,
$checked, ];
$this->addItem(new \Ease\Html\DivTag(new \Ease\Html\LabelTag(
null,
[new \Ease\Html\InputRadioTag(
$this->name,
$value,
$tagProperties,
),
$caption],
), ['class' => $class]));
}
}
}