ButtonTypeExtension   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 4
dl 0
loc 32
ccs 0
cts 13
cp 0
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A hasRuleBuilderContext() 0 4 2
A buildView() 0 16 3
A getExtendedType() 0 4 2
1
<?php
2
namespace Boekkooi\Bundle\JqueryValidationBundle\Form\Extension;
3
4
use Boekkooi\Bundle\JqueryValidationBundle\Form\FormRuleContextBuilder;
5
use Boekkooi\Bundle\JqueryValidationBundle\Form\Util\FormHelper;
6
use Symfony\Component\Form\AbstractTypeExtension;
7
use Symfony\Component\Form\ClickableInterface;
8
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
9
use Symfony\Component\Form\FormInterface;
10
use Symfony\Component\Form\FormView;
11
12
/**
13
 * @author Warnar Boekkooi <[email protected]>
14
 */
15
class ButtonTypeExtension extends AbstractTypeExtension
16
{
17
    public function buildView(FormView $view, FormInterface $form, array $options)
18
    {
19
        /** @var FormInterface | ClickableInterface $form */
20
        if (!$form instanceof ClickableInterface) {
21
            return;
22
        }
23
24
        $viewRoot = FormHelper::getViewRoot($view);
25
        if (!$this->hasRuleBuilderContext($viewRoot)) {
26
            return;
27
        }
28
29
        /** @var FormRuleContextBuilder $context */
30
        $context = $viewRoot->vars['rule_builder'];
31
        $context->addButton($view, FormHelper::getValidationGroups($form));
32
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37
    public function getExtendedType()
38
    {
39
        return FormHelper::isSymfony3Compatible() ? ButtonType::class : 'button';
40
    }
41
42
    protected function hasRuleBuilderContext(FormView $view)
43
    {
44
        return isset($view->vars['rule_builder']) && $view->vars['rule_builder'] instanceof FormRuleContextBuilder;
45
    }
46
}
47