blob: 6e0e25f0b81d96eee18f47a25d15dcf7ee6290fb (
plain)
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
|
<?php
namespace ipl\Html\FormElement;
use ipl\Html\Attributes;
use ipl\Html\Form;
class PasswordElement extends InputElement
{
/** @var string Dummy passwd of this element to be rendered */
const DUMMYPASSWORD = '_ipl_form_5847ed1b5b8ca';
protected $type = 'password';
/** @var bool Status of the form */
protected $isFormValid = true;
protected function registerAttributeCallbacks(Attributes $attributes)
{
parent::registerAttributeCallbacks($attributes);
$attributes->registerAttributeCallback(
'value',
function () {
if ($this->hasValue() && count($this->getValueCandidates()) === 1 && $this->isFormValid) {
return self::DUMMYPASSWORD;
}
if (parent::getValue() === self::DUMMYPASSWORD) {
return self::DUMMYPASSWORD;
}
return null;
}
);
}
public function onRegistered(Form $form)
{
$form->on(Form::ON_VALIDATE, function ($form) {
$this->isFormValid = $form->isValid();
});
}
public function getValue()
{
$value = parent::getValue();
$candidates = $this->getValueCandidates();
while ($value === self::DUMMYPASSWORD) {
$value = array_pop($candidates);
}
return $value;
}
}
|