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

TYPO3-Headless / headless / 14022693367

23 Mar 2025 08:26PM UTC coverage: 52.345% (-20.8%) from 73.13%
14022693367

Pull #815

github

web-flow
Merge e0fcdaa4a into a15e1c8c4
Pull Request #815: [FEATURE] Add support for f:form.* viewhelper

0 of 600 new or added lines in 15 files covered. (0.0%)

1105 of 2111 relevant lines covered (52.34%)

5.94 hits per line

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

0.0
/Classes/XClass/ViewHelpers/Form/UploadViewHelper.php
1
<?php
2

3
/*
4
 * This file is part of the "headless" Extension for TYPO3 CMS.
5
 *
6
 * For the full copyright and license information, please read the
7
 * LICENSE.md file that was distributed with this source code.
8
 */
9

10
declare(strict_types=1);
11

12
/*
13
 * This file is part of the TYPO3 CMS project.
14
 *
15
 * It is free software; you can redistribute it and/or modify it under
16
 * the terms of the GNU General Public License, either version 2
17
 * of the License, or any later version.
18
 *
19
 * For the full copyright and license information, please read the
20
 * LICENSE.txt file that was distributed with this source code.
21
 *
22
 * The TYPO3 project - inspiring people to share!
23
 */
24

25
namespace FriendsOfTYPO3\Headless\XClass\ViewHelpers\Form;
26

27
/**
28
 * A ViewHelper which generates an :html:`<input type="file">` HTML element.
29
 * Make sure to set ``enctype="multipart/form-data"`` on the form!
30
 *
31
 * Examples
32
 * ========
33
 *
34
 * Example::
35
 *
36
 *    <f:form.upload name="file" />
37
 *
38
 * Output::
39
 *
40
 *    {
41
 *      "type": "file",
42
 *      "name": "tx_extension_plugin[file]"
43
 *    }
44
 */
45
final class UploadViewHelper extends AbstractFormFieldViewHelper
46
{
47
    public function initializeArguments(): void
48
    {
NEW
49
        parent::initializeArguments();
×
NEW
50
        $this->registerArgument('errorClass', 'string', 'CSS class to set if there are errors for this ViewHelper', false, 'f3-form-error');
×
51
    }
52

53
    public function render(): string
54
    {
NEW
55
        $this->data = json_decode(parent::render(), true);
×
56

NEW
57
        $multiple = isset($this->additionalArguments['multiple']);
×
NEW
58
        $name = $this->getName();
×
NEW
59
        $allowedFields = ['name', 'type', 'tmp_name', 'error', 'size'];
×
NEW
60
        foreach ($allowedFields as $fieldName) {
×
NEW
61
            if ($multiple) {
×
NEW
62
                $formTokenFieldName = sprintf('%s[*][%s]', $name, $fieldName);
×
63
            } else {
NEW
64
                $formTokenFieldName = $name . '[' . $fieldName . ']';
×
65
            }
NEW
66
            $this->registerFieldNameForFormTokenGeneration($formTokenFieldName);
×
67
        }
NEW
68
        $this->data['type'] = 'file';
×
69

NEW
70
        if ($multiple) {
×
NEW
71
            $this->data['name'] = $name . '[]';
×
72
        } else {
NEW
73
            $this->data['name'] = $name;
×
74
        }
75

NEW
76
        $this->setErrorClassAttribute();
×
NEW
77
        return json_encode($this->data);
×
78
    }
79
}
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