*/
protected $allowSvgImage = false;
+ /**
+ * Acceptable file types.
+ * @var null|string[]
+ * @since 5.3
+ */
+ protected $acceptableFiles = null;
+
/**
* maximum filesize for each uploaded file
* @var null|number
if ($this->isImageOnly()) {
$uploadField->setAllowSvgImage($this->svgImageAllowed());
}
+ $uploadField->setAcceptableFiles($this->getAcceptableFiles());
return $uploadField;
}
/**
* Sets the flag for `imageOnly`. This flag indicates whether only images
* can uploaded via this field. Other file types will be rejected during upload.
- *
+ *
+ * If set to `true` will also set the acceptable types to `image/*`. If set to
+ * false it will clear the acceptable types if they are `image/*`.
+ *
* @param boolean $imageOnly
* @return static this field
*
}
$this->imageOnly = $imageOnly;
+ if ($imageOnly) {
+ $this->setAcceptableFiles(['image/*']);
+ }
+ else {
+ // Using == here is safe, because we match a single element array containing
+ // a scalar value.
+ if ($this->getAcceptableFiles() == ['image/*']) {
+ $this->setAcceptableFiles(null);
+ }
+ }
return $this;
}
public function svgImageAllowed() {
return $this->allowSvgImage;
}
+
+ /**
+ * Specifies acceptable file types. Use null to not specify any restrictions.
+ *
+ * <strong>Heads up:</strong> This feature is used to improve user experience, by removing
+ * unacceptable files from the file picker. It does not validate the type of the uploaded
+ * file. You are responsible to perform (proper) validation on the server side.
+ *
+ * Valid values are specified as "Unique file type specifiers":
+ * - A case insensitive file extension starting with a dot.
+ * - A mime type.
+ * - `audio/*`
+ * - `image/*`
+ * - `video/*`
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Unique_file_type_specifiers
+ * @param string[]|null $acceptableFiles
+ * @since 5.3
+ */
+ public function setAcceptableFiles($acceptableFiles = null) {
+ $this->acceptableFiles = $acceptableFiles;
+
+ return $this;
+ }
+
+ /**
+ * Returns the acceptable file types.
+ *
+ * @return string[]|null
+ * @since 5.3
+ */
+ public function getAcceptableFiles() {
+ return $this->acceptableFiles;
+ }
}