FormHandler::getFormModelData()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
/*
3
 * WellCommerce Open-Source E-Commerce Platform
4
 *
5
 * This file is part of the WellCommerce package.
6
 *
7
 * (c) Adam Piotrowski <[email protected]>
8
 *
9
 * For the full copyright and license information,
10
 * please view the LICENSE file that was distributed with this source code.
11
 */
12
13
namespace WellCommerce\Component\Form\Handler;
14
15
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
16
use WellCommerce\Component\Form\DataMapper\FormDataMapperInterface;
17
use WellCommerce\Component\Form\Elements\FormInterface;
18
use WellCommerce\Component\Form\Request\FormRequestHandlerInterface;
19
use WellCommerce\Component\Form\Validator\FormValidatorInterface;
20
21
/**
22
 * Class FormHandler
23
 *
24
 * @author Adam Piotrowski <[email protected]>
25
 */
26
class FormHandler implements FormHandlerInterface
27
{
28
    /**
29
     * @var EventDispatcherInterface
30
     */
31
    protected $eventDispatcher;
32
33
    /**
34
     * @var FormDataMapperInterface
35
     */
36
    protected $formDataMapper;
37
38
    /**
39
     * @var FormValidatorInterface
40
     */
41
    protected $formValidator;
42
43
    /**
44
     * @var FormRequestHandlerInterface
45
     */
46
    protected $formRequestHandler;
47
48
    /**
49
     * @var null|object
50
     */
51
    protected $formModelData;
52
53
    /**
54
     * Constructor
55
     *
56
     * @param EventDispatcherInterface    $eventDispatcher
57
     * @param FormDataMapperInterface     $formDataMapper
58
     * @param FormValidatorInterface      $formValidator
59
     * @param FormRequestHandlerInterface $formRequestHandler
60
     */
61
    public function __construct(
62
        EventDispatcherInterface $eventDispatcher,
63
        FormDataMapperInterface $formDataMapper,
64
        FormValidatorInterface $formValidator,
65
        FormRequestHandlerInterface $formRequestHandler
66
    ) {
67
        $this->eventDispatcher    = $eventDispatcher;
68
        $this->formDataMapper     = $formDataMapper;
69
        $this->formValidator      = $formValidator;
70
        $this->formRequestHandler = $formRequestHandler;
71
    }
72
73
    /**
74
     * {@inheritdoc}
75
     */
76
    public function initForm(FormInterface $form, $formModelData)
77
    {
78
        $this->formModelData = $formModelData;
79
        $this->populateForm($formModelData, $form);
80
        $form->setFormHandler($this);
81
82
        return $form;
83
    }
84
85
    /**
86
     * {@inheritdoc}
87
     */
88
    public function handleRequest(FormInterface $form)
89
    {
90
        if ($this->formRequestHandler->isSubmitted($form)) {
91
            $formSubmitValues = $this->formRequestHandler->getFormSubmitValues();
92
            $this->formDataMapper->mapRequestDataToForm($formSubmitValues, $form);
93
        }
94
95
        return $form;
96
    }
97
98
    /**
99
     * {@inheritdoc}
100
     */
101
    public function isFormValid(FormInterface $form)
102
    {
103
        if ($this->formRequestHandler->isSubmitted($form)) {
104
            $this->formDataMapper->mapFormToData($form, $this->formModelData);
0 ignored issues
show
Bug introduced by
It seems like $this->formModelData can also be of type null; however, WellCommerce\Component\F...erface::mapFormToData() does only seem to accept object, maybe add an additional type check?

If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check:

/**
 * @return array|string
 */
function returnsDifferentValues($x) {
    if ($x) {
        return 'foo';
    }

    return array();
}

$x = returnsDifferentValues($y);
if (is_array($x)) {
    // $x is an array.
}

If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.

Loading history...
105
106
            return $this->formValidator->isValid($form);
107
        }
108
109
        return false;
110
    }
111
112
    /**
113
     * {@inheritdoc}
114
     */
115
    public function isFormSubmitted(FormInterface $form)
116
    {
117
        return $this->formRequestHandler->isSubmitted($form);
118
    }
119
120
    /**
121
     * {@inheritdoc}
122
     */
123
    public function isFormAction($actionName)
124
    {
125
        return $this->formRequestHandler->isFormAction($actionName);
126
    }
127
128
    /**
129
     * {@inheritdoc}
130
     */
131
    public function getFormModelData()
132
    {
133
        return $this->formModelData;
134
    }
135
136
    public function populateForm($formModelData, $form)
137
    {
138
        return $this->formDataMapper->mapModelDataToForm($formModelData, $form);
139
    }
140
}
141