'How to bind $_FILES to a Phalcon Form?

I have this part of code:

if ($this->request->isPost() && $this->request->hasFiles()) {
    $post = $this->request->getPost();
    $file = $this->request->getUploadedFiles();
    if ($form->isValid($post)) {
        $form->bind((array) $this->request->getPost(), $entity);
        $entity->save();

        // Do some other stuff
    }
}

Is there a way to pass $file to a Phalcon\Forms\Form object? Or another practice to check if validity of a form that contains both files and text?



Solution 1:[1]

To validate Files you must use the FileValidator Class as this example:

$file = new FileValidator([
        'maxSize' => '10M',
        'messageSize' => _('Your file is huge. Max allowed is 10 Mb'),
        'allowedTypes' => ["image/jpeg", "image/png"],
        'messageType' => _('File type is not permitted. Try with JPG, GIF, etc..'),
        'messageEmpty' => _('Cannot be empty. Please upload a file')
]);

$this->validator->add('filesInputName', $file);
$messages = $this->validator->validate($_FILES);

Solution 2:[2]

This is a really old question, but as it affects my current project I share my solution. Normally, I'm using form classes and validation classes, too. For validating a file upload along with other POST data, I simply combine both payloads:

$entity = new MyCustomModel();
$merged = array_merge($_POST, $_FILES);
if ($form->isValid($merged, $entity)) {
    // ...
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Infobuscador
Solution 2 rabudde