Skip to content

Commit 826f21b

Browse files
author
René Hrdina
committed
allow specifying 'this mime type is not allowed' error message on content type level. fixes #12
1 parent b4e3d35 commit 826f21b

File tree

7 files changed

+31
-2
lines changed

7 files changed

+31
-2
lines changed

bundle/Core/FieldType/EnhancedBinaryFile/FormMapper.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, Field
2424
'label' => 'field_definition.enhancedbinaryfile.allowedTypes',
2525
'translation_domain' => 'messages',
2626
]
27+
)
28+
->add(
29+
'mimeTypesMessage',
30+
TextType::class,
31+
[
32+
'required' => false,
33+
'property_path' => 'fieldSettings[mimeTypesMessage]',
34+
'label' => 'field_definition.enhancedbinaryfile.mimeTypesMessage',
35+
'translation_domain' => 'messages',
36+
]
2737
);
2838
}
2939
}

bundle/Core/FieldType/EnhancedBinaryFile/Type.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ public function validateFieldSettings($fieldSettings)
139139

140140
foreach ($fieldSettings as $name => $value) {
141141
switch ($name) {
142+
case 'mimeTypesMessage': // break omitted on purpose
142143
case 'allowedTypes':
143144
// Nothing to validate, just recognize this setting as known
144145
break;

bundle/Core/Persistence/Legacy/Content/FieldValue/Converter/Converter.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ public function toStorageFieldDefinition(FieldDefinition $fieldDef, StorageField
4646
$storageDef->dataText1 = isset($fieldDef->fieldTypeConstraints->fieldSettings['allowedTypes']) ?
4747
$fieldDef->fieldTypeConstraints->fieldSettings['allowedTypes'] :
4848
'';
49+
$storageDef->dataText2 = isset($fieldDef->fieldTypeConstraints->fieldSettings['mimeTypesMessage']) ?
50+
$fieldDef->fieldTypeConstraints->fieldSettings['mimeTypesMessage'] :
51+
'';
4952
}
5053

5154
/**
@@ -67,6 +70,7 @@ public function toFieldDefinition(StorageFieldDefinition $storageDef, FieldDefin
6770
),
6871
'fieldSettings' => new FieldSettings(array(
6972
'allowedTypes' => $storageDef->dataText1,
73+
'mimeTypesMessage' => $storageDef->dataText2,
7074
)),
7175
)
7276
);

bundle/Form/FieldTypeHandler/EnhancedFile.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ protected function buildFieldForm(
6868

6969
$maxFileSize = $fieldDefinition->validatorConfiguration['FileSizeValidator']['maxFileSize'];
7070
$allowedExtensions = $fieldDefinition->fieldSettings['allowedTypes'];
71+
$mimeTypesMessage = $fieldDefinition->fieldSettings['mimeTypesMessage'];
7172

7273
if (null !== $maxFileSize || !empty($allowedExtensions)) {
7374
$constraints = array();
@@ -89,6 +90,11 @@ protected function buildFieldForm(
8990
$constraints['mimeTypes'] = $allowedMimeTypes;
9091
}
9192

93+
if (!empty($mimeTypesMessage))
94+
{
95+
$constraints['mimeTypesMessage'] = $mimeTypesMessage;
96+
}
97+
9298
$options['constraints'][] = new Constraints\File($constraints);
9399
}
94100

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
field_definition.enhancedbinaryfile.allowedTypes: Erlaubte Dateiformate (komma-separiert)
1+
field_definition.enhancedbinaryfile.allowedTypes: Erlaubte Dateiformate (|-separiert)
2+
field_definition.enhancedbinaryfile.mimeTypesMessage: Mimetype Validierungs-Fehlertext (https://symfony.com/doc/current/reference/constraints/File.html#mimetypesmessage)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
field_definition.enhancedbinaryfile.allowedTypes: Allowed file types (comma separated)
1+
field_definition.enhancedbinaryfile.allowedTypes: Allowed file types (pipe-separated)
2+
field_definition.enhancedbinaryfile.mimeTypesMessage: Wrong mimetype error message (https://symfony.com/doc/current/reference/constraints/File.html#mimetypesmessage)

bundle/Resources/views/admin/field_types.html.twig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,10 @@
1111
{{- form_errors(form.allowedTypes) -}}
1212
{{- form_widget(form.allowedTypes) -}}
1313
</div>
14+
15+
<div class="enhancedezbinaryfile-validator mime-types-message{% if group_class is not empty %} {{ group_class }}{% endif %}">
16+
{{- form_label(form.mimeTypesMessage) -}}
17+
{{- form_errors(form.mimeTypesMessage) -}}
18+
{{- form_widget(form.mimeTypesMessage) -}}
19+
</div>
1420
{% endblock %}

0 commit comments

Comments
 (0)