Completed
Pull Request — master (#36)
by Daniel
02:20
created

ViewBuilder::resolveOptions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 8
nc 1
nop 3
1
<?php
2
3
namespace Psi\Component\ContentType\View;
4
5
use Psi\Component\ContentType\FieldLoader;
6
use Psi\Component\ContentType\LoadedField;
7
use Symfony\Component\OptionsResolver\OptionsResolver;
8
9
class ViewBuilder
10
{
11
    private $fieldLoader;
12
    private $viewRegistry;
13
14
    public function __construct(
15
        FieldLoader $fieldLoader,
16
        ViewRegistry $viewRegistry
17
    ) {
18
        $this->fieldLoader = $fieldLoader;
19
        $this->viewRegistry = $viewRegistry;
20
    }
21
22
    public function createView(string $fieldType, $data, array $options)
23
    {
24
        $fieldService = $this->fieldLoader->load($fieldType, $options);
25
        $viewService = $this->viewRegistry->get($fieldService->getInnerField()->getViewType());
26
        $options = $this->resolveOptions($fieldService, $viewService, $options);
27
28
        $view = new View($options['template']);
29
        $viewService->buildView($view, $data, $options);
30
31
        return $view;
32
    }
33
34
    private function resolveOptions(LoadedField $field, ViewInterface $view, array $options)
0 ignored issues
show
Unused Code introduced by
The parameter $options is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
35
    {
36
        $options = $field->getViewOptions();
37
38
        $viewOptionResolver = new OptionsResolver();
39
        $viewOptionResolver->setDefault('template', null);
40
        $viewOptionResolver->setAllowedTypes('template', ['string', 'null']);
41
42
        $view->configureOptions($viewOptionResolver);
43
        $options = $viewOptionResolver->resolve($options);
44
45
        return $options;
46
    }
47
}
48