MvcCore form extension with input type file and file(s) upload validation.
This upload has no backward compatible javascript or flash inside. It's strictly HTML5 with no additional info displaying. You can extend this field to do it.
composer require mvccore/ext-form-field-fileinput:fileFiles- configured by default
- validate submitted file or multiple files by checking:
- build in PHP upload errors (max. POST size atc...)
- if file is not any system file and if it is realy uploaded file (
is_uploaded_file(), is_file(),filesize()`) - allowed characters in filename, this validator automaticly sanitize uploaded filename every time
acceptattribute with allowed mime types by uploaded file(s) magic bytes (or by extension inacceptattribute, converted on server side to mime type to check magic bytes)- ZIP/TAR.GZ/PNG file bombs
- always server side checked attributes
required,disabledandreadonly - all HTML5 specific and global atributes (by Mozilla Development Network Docs)
- every field has it's build-in specific validator described above
- every build-in validator adds form error (when necessary) into session and than all errors are displayed/rendered and cleared from session on error page, where user is redirected after submit
- any field is possible to render naturally or with custom template for specific field class/instance
- very extensible field classes - every field has public template methods:
SetForm()- called immediatelly after field instance is added into form instancePreDispatch()- called immediatelly before any field instance rendering typeRender()- called on every instance in form instance rendering process- submethods:
RenderNaturally(),RenderTemplate(),RenderControl(),RenderLabel()...
- submethods:
Submit()- called on every instance when form is submitted
$form = (new \MvcCore\Ext\Form($controller))->SetId('demo');
...
$photos = new \MvcCore\Ext\Forms\Fields\Time([
'name' => 'photos',
'label' => 'Add your photos:',
'accept' => 'image/*',
'maxCount' => 5, // max. uploaded photos
'maxSize' => 2097152, // max. 2 MB in binary for one item
]);
...
$form->AddFields($photos);- implement RAR file bombs detection and bz2 file bombs