UserProfileSelectRadioItem.php 1.92 KB
Newer Older
1
2
3
<?php
namespace UnicaenAuth\View\Helper;

Bertrand Gauthier's avatar
Bertrand Gauthier committed
4
5
use Laminas\Permissions\Acl\Role\RoleInterface;
use Laminas\Form\Element\Radio;
6
7
8
9
10
11
12
13
14
15
16

/**
 * Aide de vue dessinant un item de sélection d'un profil utilisateur.
 * Utilisé par l'aide de vue UserProfileSelect.
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
 * @see UserProfileSelect
 */
class UserProfileSelectRadioItem extends UserAbstract
{
    /**
17
     * @var RoleInterface
18
19
     */
    protected $role;
20

21
22
23
24
    /**
     * @var bool
     */
    protected $selected;
25

26
27
28
29
    /**
     * @var string
     */
    protected $formClass;
30

31
    /**
32
     *
33
     * @param RoleInterface $role
34
35
36
     * @param bool $selected
     * @return self
     */
37
    public function __invoke(RoleInterface $role, $selected = false)
38
39
40
    {
        $this->role     = $role;
        $this->selected = $selected;
41

42
43
        return $this;
    }
44

45
46
47
48
49
50
51
52
    /**
     * Retourne le code HTML généré par cette aide de vue.
     *
     * @return string
     */
    public function render()
    {
        $radio = $this->createRadio();
53

54
        $html = $this->getView()->formRadio($radio);
55

56
57
        return $html;
    }
58

59
60
61
62
63
64
65
66
67
    /**
     * Retourne le code HTML généré par cette aide de vue.
     *
     * @return string
     */
    public function __toString()
    {
        return $this->render();
    }
68

69
70
71
72
73
74
75
    /**
     * @return Radio
     */
    protected function createRadio()
    {
        $id = $this->role->getRoleId();
        $inputClass = 'user-profile-select-input';
76

77
	$roleToString = method_exists($this->role, '__toString') ? (string) $this->role : $this->role->getRoleId();
78

79
80
81
        // rendu sous forme de radio
        $radio = new Radio('role');
        $radio
82
                ->setValueOptions([$id => $roleToString])
83
84
85
                ->setAttribute('class', $inputClass)
                ->setAttribute('title', "Cliquez pour changer de profil courant")
                ->setValue($this->selected ? $id : null);
86

87
88
89
        return $radio;
    }
}