Skip to content
This repository has been archived by the owner on Jan 30, 2020. It is now read-only.

Undefined index dirname in RenameUpload filter #30

Open
GeeH opened this issue Jun 28, 2016 · 1 comment
Open

Undefined index dirname in RenameUpload filter #30

GeeH opened this issue Jun 28, 2016 · 1 comment

Comments

@GeeH
Copy link
Contributor

GeeH commented Jun 28, 2016

This issue has been moved from the zendframework repository as part of the bug migration program as outlined here - http://framework.zend.com/blog/2016-04-11-issue-closures.html


Original Issue: zendframework/zendframework#7274
User: @denchik63
Created On: 2015-02-27T19:21:43Z
Updated At: 2015-11-06T20:46:42Z
Body
Hi everyone.

Form:

/**
 * @return Form
 */
private function getPhotoGalleryForm() {
    $photoGallery = new ObjectFieldset();
    $photoGallery->setObject(new ClientPhotoGallery());
    $photoGallery->setHydrator(new DoctrineOrmHydrator($this->getEntityManager(), 'Admin\Entity\ClientPhotoGallery'));
    $photoGallery->add([
        'name' => 'title',
        'type' => 'AbstractAdmin\Element\ExtendedText',
        'required' => false,
        'options' => array(
            'label' => 'Заголовок',
        ),
    ]);

    $image = new ObjectFieldset();
    $image->setObject(new Image());
    $image->setHydrator(new DoctrineOrmHydrator($this->getEntityManager(), 'Admin\Entity\Image'));
    $image->add([
        'name' => 'id',
        'type' => 'AbstractAdmin\Element\ExtendedHidden',
        'required' => true,
    ]);
    $image->add([
        'name' => 'image',
        'type' => 'AbstractAdmin\Element\ExtendedFile',
        'required' => false,
    ]);

    $images = new ObjectCollection('images', [
        'count' => 16,
        'target_element' => $image,
    ]);

    $photoGallery->add($images);
    $photoGalleries = new ObjectCollection('photoGalleries', [
        'count' => 6,
        'target_element' => $photoGallery,
    ]);

    $data = $this->getDataFieldset();
    $data->setHydrator(new DoctrineOrmHydrator($this->getEntityManager(), 'Admin\Entity\ClientData'));
    $data->add($photoGalleries);

    $form = $this->getSubmitForm('photoGalleryForm', 'photoGallerySubmit');

    $form->add($data);
    $form->setInputFilter($this->getPhotoGalleryInputFilter());

    $form->prepare();

    return $form;
}

InputFilter:

/**
 * @return InputFilter
 */
private function getPhotoGalleryInputFilter() {
    $factory = new Factory();
    $formFilter = new InputFilter();
    $dataFilter = new InputFilter();

    $photoGalleriesFilter = new ApplicationCollectionInputFilter();
    $photoGalleriesFilter->setCount(6);
    $photoGalleryInputFilter = new InputFilter();

    $photoGalleryInputFilter->add($factory->createInput(array(
        'name' => 'id',
        'required' => false,
    )));

    $photoGalleryInputFilter->add($factory->createInput(array(
        'name' => 'title',
        'required' => false,
        'filters' => array(
            array(
                'name' => 'StringTrim',
            ),
            array(
                'name' => 'HtmlEntities',
            ),
        ),
    )));

    $imagesFilter = new ApplicationCollectionInputFilter();
    $imagesFilter->setCount(16);
    $imageInputFilter = new InputFilter();

    $imageInputFilter->add($factory->createInput(array(
        'name' => 'id',
        'required' => false,
    )));

    $imageInputFilter->add($factory->createInput(array(
        'name' => 'image',
        'required' => false,
        'filters' => array(
            array(
                'name' => 'Zend\Filter\File\RenameUpload',
                'options' => array(
                    'target' => '*',
                    'randomize' => true,
                ),
            ),
        ),
        'type' => 'Zend\InputFilter\FileInput',
    )));

    $imagesFilter->setInputFilter($imageInputFilter);

    $photoGalleryInputFilter->add($imagesFilter, 'images');

    $photoGalleriesFilter->setInputFilter($photoGalleryInputFilter);

    $dataFilter->add($photoGalleriesFilter, 'photoGalleries');
    $formFilter->add($dataFilter, 'data');

    return $formFilter;
}

When i tried to save the form i got error - Notice: Undefined index: dirname in Z:\home\findservice\vendor\zendframework\zendframework\library\Zend\Filter\File\RenameUpload.php on line 267

I think it happend because in RenameValidator::getFinalTarget($uploadData) array has empty "tmp_name" element (or elements).

@weierophinney
Copy link
Member

This repository has been closed and moved to laminas/laminas-filter; a new issue has been opened at laminas/laminas-filter#11.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants