Undefined index dirname in RenameUpload filter
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: https://github.com/zendframework/zendframework/issues/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).
This repository has been closed and moved to laminas/laminas-filter; a new issue has been opened at https://github.com/laminas/laminas-filter/issues/11.