Skip to content

Commit 9e4ff02

Browse files
authored
Merge pull request #90 from sherlockode/fix/error-form
Fix error when form is in error
2 parents 055a012 + 012adf8 commit 9e4ff02

File tree

2 files changed

+38
-11
lines changed

2 files changed

+38
-11
lines changed

Resources/views/Form/upload_file.html.twig

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
{% import _self as self %}
33
<div class="afb_file_container {% if imagePreview %}with_preview{% endif %}" {{ block('data_attributes') }}
44
{% with {progressBar: true, img: null, fileName:null, uploadId: null, file: null} %}
5-
data-prototype="{{ block('file_info')|e }}"
5+
data-prototype="{{ block('file_info')|e }}"
66
{% endwith %}
77
>
88
{% set disabled = true %}
99
{% if not form.vars.disabled %}
10-
{{ block('dropzone') }}
1110
{% set disabled = false %}
11+
{{ block('dropzone') }}
1212
{% endif %}
1313
{% if false == imagePreview or false == multiple %}
1414
{{ block('file_list') }}
@@ -47,7 +47,7 @@
4747
{% endblock %}
4848

4949
{% block dropzone %}
50-
<label for="afb_file_input-{{ id }}" class="afb_dropzone"{% if files|length > 0 and false == multiple %} style="display:none"{% endif %}>
50+
<label for="afb_file_input-{{ id }}" class="afb_dropzone {% if files is not empty%}afb_dropzone-started{% endif %}"{% if files|length > 0 and false == multiple %} style="display:none"{% endif %}>
5151
<h5 class="afb_dropzone-title">{{ (dropzoneLabel ?? label)|trans({}, translation_domain) }}</h5>
5252
<input type="file" {% if multiple %}multiple{% endif %} class="afb_file_input" id="afb_file_input-{{ id }}"/>
5353

@@ -61,19 +61,34 @@
6161
{% set i = 0 %}
6262
<ul class="afb_upload_container {% if false == imagePreview %}afb_no_preview{% endif %}">
6363
{% for file in files %}
64-
{% set i = i + 1 %}
65-
{% with {progressBar: false, img: sherlockode_afb_asset(mapping, file.id), fileName: sherlockode_afb_filename(mapping, file), uploadId: i, file: file} %}
66-
{{ block('file_info') }}
67-
{% endwith %}
64+
{% if file.id is not null %}
65+
{% set i = i + 1 %}
66+
{% with {progressBar: false, img: sherlockode_afb_asset(mapping, file.id), fileName: sherlockode_afb_filename(mapping, file), uploadId: i, file: file} %}
67+
{{ block('file_info') }}
68+
{% endwith %}
69+
{% endif %}
6870
{% endfor %}
6971

7072
{# render the tmp uploaded file form inputs (key and token) which have not been saved yet
7173
this will be empty in regular cases, only present on invalid forms (key/token data was just posted) #}
7274
{% for child in form.files|default([]) %}
73-
{% if child.vars.data is not empty %}
75+
{% if child.vars.data is not empty and child.vars.form.children.key is defined and child.vars.form.children.token is defined %}
76+
{% set data = child.vars.data %}
77+
{% set key = child.vars.form.children.key %}
78+
{% set token = child.vars.form.children.token %}
7479
{% set i = i + 1 %}
75-
<li class="afb_item afb_preview_{{ i }}" data-upload="{{ i }}">
76-
{{ form_widget(child) }}
80+
<li class="afb_item afb_preview_{{ i }}" data-upload="{{ i }}" data-tmp="{{ uploadMode == 'temporary' ? 1 : 0 }}">
81+
{% if imagePreview %}
82+
<div class="afb_file_preview">
83+
<img src="{{ sherlockode_afb_base_64_image(data) }}" alt="{{ data.getClientOriginalName }}" />
84+
</div>
85+
{% endif %}
86+
<div class="afb_filename"><span>{{ data.getClientOriginalName }}</span></div>
87+
{% if disabled is defined and not disabled %}
88+
<a class="afb_remove_file" href="#" data-upload="{{ i }}">X</a>
89+
{% endif %}
90+
<input type="hidden" name="{{ key.vars.full_name }}" value="{{ key.vars.value }}">
91+
<input type="hidden" name="{{ token.vars.full_name }}" value="{{ token.vars.value }}">
7792
</li>
7893
{% endif %}
7994
{% endfor %}
@@ -89,7 +104,7 @@
89104
{% if imagePreview %}
90105
<div class="afb_file_preview">
91106
{% if img is not null %}
92-
<img src="{{ img }}"/>
107+
<img src="{{ img }}" alt="{{ fileName }}"/>
93108
{% endif %}
94109
</div>
95110
{% endif %}

Twig/Extension/UploaderExtension.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Sherlockode\AdvancedFormBundle\Manager\MappingManager;
66
use Sherlockode\AdvancedFormBundle\Manager\UploadManager;
7+
use Symfony\Component\HttpFoundation\File\UploadedFile;
78
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
89
use Twig\Extension\AbstractExtension;
910
use Twig\TwigFunction;
@@ -40,6 +41,7 @@ public function getFunctions()
4041
return [
4142
new TwigFunction('sherlockode_afb_asset', [$this, 'getAsset']),
4243
new TwigFunction('sherlockode_afb_filename', [$this, 'getFilename']),
44+
new TwigFunction('sherlockode_afb_base_64_image', [$this, 'getImageBase64']),
4345
];
4446
}
4547

@@ -62,4 +64,14 @@ public function getFilename($type, $object)
6264

6365
return $this->uploadManager->getFilename($mapping, $object);
6466
}
67+
68+
/**
69+
* @param UploadedFile $file
70+
*
71+
* @return string
72+
*/
73+
public function getImageBase64(UploadedFile $file): string
74+
{
75+
return 'data:image/'.$file->getExtension().';base64,'.base64_encode(file_get_contents($file->getPathname()));
76+
}
6577
}

0 commit comments

Comments
 (0)