• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

FluidTYPO3 / vhs / 28155672107

23 Jun 2026 01:13PM UTC coverage: 69.678% (-1.5%) from 71.202%
28155672107

push

github

NamelessCoder
[TASK] Homogenize ViewHelper return types

5 of 7 new or added lines in 4 files covered. (71.43%)

105 existing lines in 12 files now uncovered.

4798 of 6886 relevant lines covered (69.68%)

2.03 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

88.64
/Classes/ViewHelpers/Form/FieldNameViewHelper.php
1
<?php
2
namespace FluidTYPO3\Vhs\ViewHelpers\Form;
3

4
/*
5
 * This file is part of the FluidTYPO3/Vhs project under GPLv2 or later.
6
 *
7
 * For the full copyright and license information, please read the
8
 * LICENSE.md file that was distributed with this source code.
9
 */
10

11
use FluidTYPO3\Vhs\Core\ViewHelper\AbstractViewHelper;
12
use TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface;
13
use TYPO3\CMS\Fluid\ViewHelpers\FormViewHelper;
14

15
/**
16
 * Form Field Name View Helper
17
 *
18
 * This viewhelper returns the properly prefixed name of the given
19
 * form field and generates the corresponding HMAC to allow posting
20
 * of dynamically added fields.
21
 */
22
class FieldNameViewHelper extends AbstractViewHelper
23
{
24
    /**
25
     * @var boolean
26
     */
27
    protected $escapeOutput = false;
28

29
    /**
30
     * @var PersistenceManagerInterface
31
     */
32
    protected $persistenceManager;
33

34
    public function injectPersistenceManager(PersistenceManagerInterface $persistenceManager): void
35
    {
36
        $this->persistenceManager = $persistenceManager;
×
37
    }
38

39
    public function initializeArguments(): void
40
    {
41
        $this->registerArgument('name', 'string', 'Name of the form field to generate the HMAC for.');
1✔
42
        $this->registerArgument(
1✔
43
            'property',
1✔
44
            'string',
1✔
45
            'Name of object property. If used in conjunction with <f:form object="...">, "name" argument will ' .
1✔
46
            'be ignored.'
1✔
47
        );
1✔
48
    }
49

50
    /**
51
     * @return string
52
     */
53
    public function render()
54
    {
55
        /** @var string $property */
56
        $property = $this->arguments['property'];
2✔
57

58
        $viewHelperVariableContainer = $this->renderingContext->getViewHelperVariableContainer();
2✔
59
        if ($this->isObjectAccessorMode()) {
2✔
60
            $formObjectName = $viewHelperVariableContainer->get(FormViewHelper::class, 'formObjectName');
1✔
61
            if (!empty($formObjectName)) {
1✔
62
                $propertySegments = explode('.', $property);
1✔
63
                $propertyPath = '';
1✔
64
                foreach ($propertySegments as $segment) {
1✔
65
                    $propertyPath .= '[' . $segment . ']';
1✔
66
                }
67
                $name = $formObjectName . $propertyPath;
1✔
68
            } else {
UNCOV
69
                $name = $property;
×
70
            }
71
        } else {
72
            /** @var string $name */
73
            $name = $this->arguments['name'];
1✔
74
        }
75
        if (null === $name || '' === $name) {
2✔
76
            return '';
×
77
        }
78
        if (!$viewHelperVariableContainer->exists(FormViewHelper::class, 'fieldNamePrefix')) {
2✔
79
            return $name;
1✔
80
        }
81
        $fieldNamePrefix = $viewHelperVariableContainer->get(FormViewHelper::class, 'fieldNamePrefix');
1✔
82
        if (!is_string($fieldNamePrefix) || $fieldNamePrefix === '') {
1✔
83
            return $name;
×
84
        }
85
        $fieldNameSegments = explode('[', $name, 2);
1✔
86
        $name = $fieldNamePrefix . '[' . $fieldNameSegments[0] . ']';
1✔
87
        if (1 < count($fieldNameSegments)) {
1✔
88
            $name .= '[' . $fieldNameSegments[1];
1✔
89
        }
90

91
        if ($viewHelperVariableContainer->exists(FormViewHelper::class, 'formFieldNames')) {
1✔
92
            /** @var array $formFieldNames */
93
            $formFieldNames = $viewHelperVariableContainer->get(FormViewHelper::class, 'formFieldNames');
×
94
        } else {
95
            $formFieldNames = [];
1✔
96
        }
97
        $formFieldNames[] = $name;
1✔
98
        $viewHelperVariableContainer->addOrUpdate(FormViewHelper::class, 'formFieldNames', $formFieldNames);
1✔
99
        return $name;
1✔
100
    }
101

102
    protected function isObjectAccessorMode(): bool
103
    {
104
        return (
2✔
105
            $this->hasArgument('property')
2✔
106
            && $this->renderingContext->getViewHelperVariableContainer()->exists(
2✔
107
                FormViewHelper::class,
2✔
108
                'formObjectName'
2✔
109
            )
2✔
110
        );
2✔
111
    }
112
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc