Basically for a simple solution what you want is a file field like Izo mentions. If you are using form objects its fairly simple to add attributes to the HTML output.
A progress bar is more for clientside scripting and should be possible to implement on anything.
use Phalcon\Forms\Element\File;
$file = new File(
"image",
[
"placeholder" => "",
"multiple" => "mulitple"
]
);
# will generate
<input type="file" id="image" name="image" placeholder="" multiple="mulitple">
If you are looking to just generate is via volt you could just write the above HTML output.
If the field does not exist you can create it, I'm using the below to create a input[type="time"] field.
Structure: app/forms/elements/Time.php
<?php
namespace PhalconTime\Forms\Elements;
use Phalcon\Forms\Element;
use Phalcon\Forms\ElementInterface;
/**
* PhalconTime\Forms\Elements\Time
*
* Component INPUT[type=time] for forms
*/
class Time extends Element implements ElementInterface
{
/**
* Renders the element widget returning html
*
* @param array $attributes
* @return string
*/
public function render($attributes = null)
{
return \Phalcon\Tag::TimeField($this->prepareAttributes($attributes));
}
}