/
HorizontalFormErrorRender.php
80 lines (69 loc) · 2.04 KB
/
HorizontalFormErrorRender.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
<?php
/**
* User: delboy1978uk
* Date: 04/12/2016
* Time: 23:36
*/
namespace Del\Form\Renderer\Error;
use Del\Form\Field\FieldInterface;
use DOMElement;
use DOMText;
class HorizontalFormErrorRender extends AbstractErrorRender implements ErrorRendererInterface
{
/**
* @param FieldInterface $field
* @return DOMElement
*/
public function render(FieldInterface $field)
{
$helpBlock = $this->dom->createElement('span');
$helpBlock->setAttribute('class', 'help-block');
if ($this->shouldRender($field)) {
$helpBlock = $field->hasCustomErrorMessage()
? $this->addCustomErrorMessage($helpBlock, $field)
: $this->addErrorMessages($helpBlock, $field);
}
$div = $this->dom->createElement('div');
$div->setAttribute('class', 'col-sm-offset-2 col-sm-10');
$div->appendChild($helpBlock);
return $div;
}
/**
* @param DOMElement $helpBlock
* @param FieldInterface $field
* @return DOMElement
*/
private function addCustomErrorMessage(DOMElement $helpBlock, FieldInterface $field)
{
$message = $field->getCustomErrorMessage();
$text = new DOMText($message);
$helpBlock->appendChild($text);
return $helpBlock;
}
/**
* @param DOMElement $helpBlock
* @param FieldInterface $field
* @return DOMElement]
*/
private function addErrorMessages(DOMElement $helpBlock, FieldInterface $field)
{
$messages = $field->getMessages();
foreach ($messages as $message) {
$helpBlock = $this->appendMessage($helpBlock, $message);
}
return $helpBlock;
}
/**
* @param DOMElement $helpBlock
* @param $message
* @return DOMElement
*/
private function appendMessage(DOMElement $helpBlock, $message)
{
$text = new DOMText($message);
$br = $this->dom->createElement('br');
$helpBlock->appendChild($text);
$helpBlock->appendChild($br);
return $helpBlock;
}
}