sulu / SuluFormBundle

Form Bundle for handling Dynamic and Symfony Forms in https://sulu.io
MIT License
81 stars 78 forks source link

Small bug in file processing in form handler #399

Open Dodger77 opened 1 month ago

Dodger77 commented 1 month ago
Q A
Bug? yes
New Feature? no
Bundle Version 2.5.4
Sulu Version 2.5.20
Browser Version n/a

Actual Behavior

In https://github.com/sulu/SuluFormBundle/blob/12d2df14f2af7ea2ec3e0c3cf1f1638c71325b20/Form/Handler.php#L257 there is a bug, that prevents the use of an own upload/attachment field type without the multiple option, so it is necessary to prevent multiple file uploads (e.g. by use of JavaScript).

The part

            if (!\count($formField->getData())) {
                continue;
            }

leads to the error:

count(): Argument #1 ($value) must be of type Countable|array, Symfony\Component\HttpFoundation\File\UploadedFile given

Expected Behavior

I think the intention of the code a few lines later

            if (!\is_array($files)) {
                $files = [$files];
            }

is to generate an array containing a single UploadedFile object. But that cannot be achieved because of the count before.

Steps to Reproduce

Using a custom file upload field type (by overwriting the AttachmentType throughservice decoration or compiler pass) without the multiple option.

Possible Solutions

            if (!$formField->getData() instanceof UploadedFile && !\count($formField->getData())) {
                continue;
            }