Completed
Pull Request — 5.6 (#2830)
by Jeroen
14:14
created

Helper/FormWidgets/PagePartWidget.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\PagePartBundle\Helper\FormWidgets;
4
5
use Doctrine\ORM\EntityManager;
6
use Doctrine\ORM\EntityManagerInterface;
7
use Kunstmaan\AdminBundle\Helper\FormWidgets\FormWidget;
8
use Kunstmaan\NodeBundle\Entity\HasNodeInterface;
9
use Kunstmaan\PagePartBundle\Helper\HasPagePartsInterface;
10
use Kunstmaan\PagePartBundle\PagePartAdmin\PagePartAdmin;
11
use Kunstmaan\PagePartBundle\PagePartAdmin\PagePartAdminConfiguratorInterface;
12
use Kunstmaan\PagePartBundle\PagePartAdmin\PagePartAdminFactory;
13
use Symfony\Component\Form\FormBuilderInterface;
14
use Symfony\Component\Form\FormView;
15
use Symfony\Component\HttpFoundation\Request;
16
17
class PagePartWidget extends FormWidget
18
{
19
    /**
20
     * @var EntityManagerInterface
21
     */
22
    protected $em;
23
24
    /**
25
     * @var PagePartAdminFactory
26
     */
27
    protected $pagePartAdminFactory;
28
29
    /**
30
     * @var PagePartAdmin
31
     */
32
    protected $pagePartAdmin;
33
34
    /**
35
     * @var HasNodeInterface
36
     */
37
    protected $page;
38
39
    /**
40
     * @var Request
41
     */
42
    protected $request;
43
44
    /**
45
     * @var PagePartAdminConfiguratorInterface
46
     */
47
    protected $pagePartAdminConfigurator;
48
49
    /**
50
     * @param HasPagePartsInterface              $page                      The page
51
     * @param Request                            $request                   The request
52
     * @param EntityManagerInterface             $em                        The entity manager
53
     * @param PagePartAdminConfiguratorInterface $pagePartAdminConfigurator The page part admin configurator
54
     * @param PagePartAdminFactory               $pagePartAdminFactory      The page part admin factory
55
     */
56
    public function __construct(HasPagePartsInterface $page, Request $request, EntityManagerInterface $em, PagePartAdminConfiguratorInterface $pagePartAdminConfigurator, PagePartAdminFactory $pagePartAdminFactory)
0 ignored issues
show
You have injected the Request via parameter $request. This is generally not recommended as there might be multiple instances during a request cycle (f.e. when using sub-requests). Instead, it is recommended to inject the RequestStack and retrieve the current request each time you need it via getCurrentRequest().
Loading history...
57
    {
58
        parent::__construct();
59
60
        $this->page = $page;
61
        $this->em = $em;
62
        $this->pagePartAdminFactory = $pagePartAdminFactory;
63
        $this->request = $request;
64
        $this->pagePartAdminConfigurator = $pagePartAdminConfigurator;
65
66
        $this->pagePartAdmin = $pagePartAdminFactory->createList($pagePartAdminConfigurator, $em, $page);
67
        $this->setTemplate('@KunstmaanPagePart/FormWidgets/PagePartWidget/widget.html.twig');
68
    }
69
70
    /**
71
     * @param FormBuilderInterface $builder The form builder
72
     */
73
    public function buildForm(FormBuilderInterface $builder)
74
    {
75
        parent::buildForm($builder);
76
77
        $this->pagePartAdmin->preBindRequest($this->request);
78
        $this->pagePartAdmin->adaptForm($builder);
79
    }
80
81
    public function bindRequest(Request $request)
82
    {
83
        parent::bindRequest($request);
84
85
        $this->pagePartAdmin->bindRequest($request);
86
    }
87
88
    /**
89
     * @param EntityManager $em The entity manager
90
     */
91
    public function persist(EntityManager $em)
92
    {
93
        parent::persist($em);
94
95
        $this->pagePartAdmin->persist($this->request);
96
    }
97
98
    /**
99
     * @return array
100
     */
101
    public function getFormErrors(FormView $formView)
102
    {
103
        $errors = parent::getFormErrors($formView);
104
105
        $formHelper = $this->getFormHelper();
106
        $key = 'pagepartadmin_' . $this->pagePartAdmin->getContext();
107
        if (isset($formView[$key])) {
108
            $errors = array_merge($errors, $formHelper->getRecursiveErrorMessages($formView['pagepartadmin_' . $this->pagePartAdmin->getContext()]));
109
        }
110
111
        return $errors;
112
    }
113
114
    /**
115
     * @return PagePartAdmin
116
     */
117
    public function getPagePartAdmin()
118
    {
119
        return $this->pagePartAdmin;
120
    }
121
122
    /**
123
     * @return array
124
     */
125
    public function getExtraParams(Request $request)
126
    {
127
        $params = [];
128
        $editPagePart = $request->get('edit');
129
        if (isset($editPagePart)) {
130
            $params['editpagepart'] = $editPagePart;
131
        }
132
133
        return $params;
134
    }
135
136
    /**
137
     * @return PagePartAdminConfiguratorInterface
138
     */
139
    public function getPagePartAdminConfigurator()
140
    {
141
        return $this->pagePartAdminConfigurator;
142
    }
143
}
144