File and image field kits¶
Kits in src/Kits/Field/Media/. There are two FileKit classes: Media\FileKit is the plain file input ($kits->fileUnmanaged()), and Media\ManagedFile\FileKit is the managed_file element. Managed file kits store upload validators as validator kits keyed by callback name and turn them into #upload_validators when built.
Upload validator keys on Drupal 10.2+ and 11
The validator kits use the legacy callback names file_validate_size, file_validate_extensions and file_validate_image_resolution as #upload_validators keys. Since Drupal 10.2, core expects validation constraint plugin IDs there (FileSizeLimit, FileExtension, FileImageDimensions). In Drupal 11, Drupal\file\Validation\FileValidator::validate() passes every key straight to the constraint plugin manager, which has no plugin with the legacy names, so expect upload validation through these kits to fail on Drupal 11. No test in this repository exercises an upload. Until this is fixed, overwrite the property on the built array, for example $form['upload']['#upload_validators'] = ['FileExtension' => ['extensions' => 'png jpg']]; after getForm(). Setting it on the kit with set() does not work, because FileKit::getArray() calls getArray() on every entry of #upload_validators.
Media\FileKit¶
A plain file input (no file entity is created).
| Class | Drupal\formfactorykits\Kits\Field\Media\FileKit (src/Kits/Field/Media/FileKit.php) |
| Extends | FieldKit |
| Factory method | $kits->fileUnmanaged() |
Form API #type |
file |
| Default ID | file |
| Traits | DefaultValueTrait, DescriptionTrait, MultipleTrait, PrefixTrait, SizeTrait, SuffixTrait, TitleTrait, ValueTrait |
Setters
| Method | From |
|---|---|
setDefaultValue(array\|string\|null $value) |
DefaultValueTrait (trait) |
setDescription(string $description) |
DescriptionTrait (trait) |
setMultiple(bool $isMultiple = TRUE) |
MultipleTrait (trait) |
setPrefix(array\|string\|null $value) |
PrefixTrait (trait) |
setSize(int $size) |
SizeTrait (trait) |
setSuffix(array\|string\|null $value) |
SuffixTrait (trait) |
setTitle(string $title) |
TitleTrait (trait) |
setValue(array\|string\|null $value) |
ValueTrait (trait) |
Example
$kit = $kits->fileUnmanaged('attachment')->setTitle('Attachment')->setMultiple();
Generated render array ([$kit->getID() => $kit->getArray()])
[
'attachment' => [
'#type' => 'file',
'#title' => 'Attachment',
'#multiple' => TRUE,
],
]
ManagedFile\FileKit¶
A managed_file element.
| Class | Drupal\formfactorykits\Kits\Field\Media\ManagedFile\FileKit (src/Kits/Field/Media/ManagedFile/FileKit.php) |
| Extends | FieldKit |
| Factory method | $kits->file() |
Form API #type |
managed_file |
| Default ID | managed_file |
| Traits | DefaultValueTrait, DescriptionTrait, MultipleTrait, PrefixTrait, RequiredTrait, SuffixTrait, TitleTrait, ValueTrait |
Setters
| Method | From |
|---|---|
setDefaultValue(array\|string\|null $value) |
DefaultValueTrait (trait) |
setDescription(string $description) |
DescriptionTrait (trait) |
setMaxFileSize(int $bytes) |
FileKit |
setMultiple(bool $isMultiple = TRUE) |
MultipleTrait (trait) |
setPrefix(array\|string\|null $value) |
PrefixTrait (trait) |
setRequired(bool $required = TRUE) |
RequiredTrait (trait) |
setSuffix(array\|string\|null $value) |
SuffixTrait (trait) |
setTitle(string $title) |
TitleTrait (trait) |
setUploadLocation(string $location) |
FileKit |
setUploadValidator(Drupal\formfactorykits\Kits\Field\Media\ManagedFile\UploadValidators\UploadValidatorKit $validator) |
FileKit |
setValue(array\|string\|null $value) |
ValueTrait (trait) |
$kits->file() is broken in the current release
FormFactoryKitsService::file() calls FileKit::create() without importing the class, so it throws Error: Class "Drupal\formfactorykits\Services\FileKit" not found. Create the kit directly, as in the example below.
Example
$kit = \Drupal\formfactorykits\Kits\Field\Media\ManagedFile\FileKit::create($kits, 'upload')->setTitle('Upload')->setUploadLocation('public://uploads')->setMaxFileSize(1048576);
Generated render array ([$kit->getID() => $kit->getArray()])
[
'upload' => [
'#type' => 'managed_file',
'#title' => 'Upload',
'#upload_location' => 'public://uploads',
'#upload_validators' => [
'file_validate_size' => ['1048576'],
],
],
]
ImageKit¶
A managed_file element for images. The constructor sets #theme => image_widget, #preview_image_style => medium, a 5 MB size validator and a png/gif/jpg/jpeg extension validator.
| Class | Drupal\formfactorykits\Kits\Field\Media\ManagedFile\ImageKit (src/Kits/Field/Media/ManagedFile/ImageKit.php) |
| Extends | FileKit |
| Factory method | $kits->image() |
Form API #type |
managed_file |
| Default ID | managed_image |
| Traits | DefaultValueTrait, DescriptionTrait, MultipleTrait, PrefixTrait, RequiredTrait, SuffixTrait, ThemeTrait, TitleTrait, ValueTrait |
Setters
| Method | From |
|---|---|
setDefaultValue(array\|string\|null $value) |
DefaultValueTrait (trait) |
setDescription(string $description) |
DescriptionTrait (trait) |
setMaxFileSize(int $bytes) |
FileKit |
setMaxResolution(int $width, int $height) |
ImageKit |
setMultiple(bool $isMultiple = TRUE) |
MultipleTrait (trait) |
setPrefix(array\|string\|null $value) |
PrefixTrait (trait) |
setPreviewImageStyle(string $style) |
ImageKit |
setRequired(bool $required = TRUE) |
RequiredTrait (trait) |
setSuffix(array\|string\|null $value) |
SuffixTrait (trait) |
setTheme(string $theme) |
ThemeTrait (trait) |
setTitle(string $title) |
TitleTrait (trait) |
setUploadLocation(string $location) |
FileKit |
setUploadValidator(Drupal\formfactorykits\Kits\Field\Media\ManagedFile\UploadValidators\UploadValidatorKit $validator) |
FileKit |
setValidExtensions(array $extensions) |
ImageKit |
setValue(array\|string\|null $value) |
ValueTrait (trait) |
Example
$kit = $kits->image('photo')->setTitle('Photo')->setMaxResolution(1200, 800);
Generated render array ([$kit->getID() => $kit->getArray()])
[
'photo' => [
'#type' => 'managed_file',
'#theme' => 'image_widget',
'#preview_image_style' => 'medium',
'#upload_validators' => [
'file_validate_size' => ['5242880'],
'file_validate_extensions' => ['png gif jpg jpeg'],
'file_validate_image_resolution' => ['1200x800'],
],
'#title' => 'Photo',
],
]
UploadValidatorKit¶
Base class for upload validators. getArray() returns the validator's callback arguments, which become the value under its callback key in #upload_validators.
| Class | Drupal\formfactorykits\Kits\Field\Media\ManagedFile\UploadValidators\UploadValidatorKit (src/Kits/Field/Media/ManagedFile/UploadValidators/UploadValidatorKit.php) |
| Extends | FieldKit |
| Factory method | $kits->uploadValidator() |
Form API #type |
none (returns callback arguments) |
| Default ID | none (pass one) |
| Traits | DefaultValueTrait, PrefixTrait, SuffixTrait, ValueTrait |
Setters
| Method | From |
|---|---|
setCallbackArguments(array $args = []) |
UploadValidatorKit |
setDefaultValue(array\|string\|null $value) |
DefaultValueTrait (trait) |
setPrefix(array\|string\|null $value) |
PrefixTrait (trait) |
setSuffix(array\|string\|null $value) |
SuffixTrait (trait) |
setValue(array\|string\|null $value) |
ValueTrait (trait) |
Example
$kit = $kits->uploadValidator('custom')->setCallbackArguments(['a']);
Generated render array ([$kit->getID() => $kit->getArray()])
[
'custom' => ['a'],
]
FileSizeUploadValidatorKit¶
Callback key file_validate_size; default size 5242880 bytes.
| Class | Drupal\formfactorykits\Kits\Field\Media\ManagedFile\UploadValidators\FileSizeUploadValidatorKit (src/Kits/Field/Media/ManagedFile/UploadValidators/FileSizeUploadValidatorKit.php) |
| Extends | UploadValidatorKit |
| Factory method | none; use FileKit::setMaxFileSize() |
Form API #type |
none |
| Default ID | none (pass one) |
| Traits | DefaultValueTrait, PrefixTrait, SuffixTrait, ValueTrait |
Setters
| Method | From |
|---|---|
setCallbackArguments(array $args = []) |
UploadValidatorKit |
setDefaultValue(array\|string\|null $value) |
DefaultValueTrait (trait) |
setFileSize(int $size) |
FileSizeUploadValidatorKit |
setPrefix(array\|string\|null $value) |
PrefixTrait (trait) |
setSuffix(array\|string\|null $value) |
SuffixTrait (trait) |
setValue(array\|string\|null $value) |
ValueTrait (trait) |
ImageExtensionUploadValidatorKit¶
Callback key file_validate_extensions; default extensions png, gif, jpg, jpeg.
| Class | Drupal\formfactorykits\Kits\Field\Media\ManagedFile\UploadValidators\ImageExtensionUploadValidatorKit (src/Kits/Field/Media/ManagedFile/UploadValidators/ImageExtensionUploadValidatorKit.php) |
| Extends | UploadValidatorKit |
| Factory method | none; use ImageKit::setValidExtensions() |
Form API #type |
none |
| Default ID | none (pass one) |
| Traits | DefaultValueTrait, PrefixTrait, SuffixTrait, ValueTrait |
Setters
| Method | From |
|---|---|
appendExtension($ext) |
ImageExtensionUploadValidatorKit |
setCallbackArguments(array $args = []) |
UploadValidatorKit |
setDefaultValue(array\|string\|null $value) |
DefaultValueTrait (trait) |
setExtensions(array $extensions = []) |
ImageExtensionUploadValidatorKit |
setPrefix(array\|string\|null $value) |
PrefixTrait (trait) |
setSuffix(array\|string\|null $value) |
SuffixTrait (trait) |
setValue(array\|string\|null $value) |
ValueTrait (trait) |
ImageResolutionUploadValidatorKit¶
Callback key file_validate_image_resolution; argument "<width>x<height>".
| Class | Drupal\formfactorykits\Kits\Field\Media\ManagedFile\UploadValidators\ImageResolutionUploadValidatorKit (src/Kits/Field/Media/ManagedFile/UploadValidators/ImageResolutionUploadValidatorKit.php) |
| Extends | UploadValidatorKit |
| Factory method | none; use ImageKit::setMaxResolution() |
Form API #type |
none |
| Default ID | none (pass one) |
| Traits | DefaultValueTrait, PrefixTrait, SuffixTrait, ValueTrait |
Setters
| Method | From |
|---|---|
setCallbackArguments(array $args = []) |
UploadValidatorKit |
setDefaultValue(array\|string\|null $value) |
DefaultValueTrait (trait) |
setMaxHeight(int $maxHeight) |
ImageResolutionUploadValidatorKit |
setMaxWidth(int $maxWidth) |
ImageResolutionUploadValidatorKit |
setPrefix(array\|string\|null $value) |
PrefixTrait (trait) |
setSuffix(array\|string\|null $value) |
SuffixTrait (trait) |
setValue(array\|string\|null $value) |
ValueTrait (trait) |