RequiredViewPass   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 2
dl 0
loc 29
ccs 12
cts 12
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A process() 0 20 4
1
<?php
2
namespace Boekkooi\Bundle\JqueryValidationBundle\Form\Rule\Processor;
3
4
use Boekkooi\Bundle\JqueryValidationBundle\Form\FormRuleContextBuilder;
5
use Boekkooi\Bundle\JqueryValidationBundle\Form\FormRuleProcessorContext;
6
use Boekkooi\Bundle\JqueryValidationBundle\Form\FormRuleProcessorInterface;
7
use Symfony\Component\Validator\Constraints\NotBlank;
8
use Symfony\Component\Validator\Constraints\NotNull;
9
use Symfony\Component\Validator\Constraints\Required;
10
11
/**
12
 * @author Warnar Boekkooi <[email protected]>
13
 */
14
class RequiredViewPass implements FormRuleProcessorInterface
15
{
16
    protected static $requiredConstraintClasses = array(
17
        NotNull::class,
18
        NotBlank::class,
19
        Required::class,
20
    );
21
22 10
    public function process(FormRuleProcessorContext $processContext, FormRuleContextBuilder $formRuleContext)
23
    {
24 10
        $view = $processContext->getView();
25 10
        if (!isset($view->vars['required'])) {
26 1
            return;
27
        }
28
29
        // Check if the field is really required according to HTML validation
30
        // (aka the required for symfony form means it needs to be submitted but maybe null or "")
31 9
        $constraints = $processContext->getConstraints();
32 9
        foreach ($constraints as $constraint) {
33 8
            if (in_array(get_class($constraint), static::$requiredConstraintClasses, true)) {
34 6
                $view->vars['required'] = true;
35
36 6
                return;
37
            }
38 6
        }
39
40 3
        $view->vars['required'] = false;
41 3
    }
42
}
43