[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка файлов на сервер средствами ZF2
DRAKULITKA
Подскажите пожалуйста как загружаются файлы средствами ZF2.
Попробовал так, но безуспешно.

Фильтр:

class ProductFilter extends InputFilter
{
protected $category;

public function __construct (Array $category = array())
{
$this->category = $category;

...............


$images = new FileInput('images');
$images ->setRequired(true);
$images ->getFilterChain()->attach(new RenameUpload(array(
'target' => 'files/images/product/product-',
'use_upload_extension' => true,
'randomize' => true,
)));

$images ->getValidatorChain()->attach(new Size(array(
'max' => substr(ini_get('upload_max_filesize'), 0, -1). 'MB',
)));

$images ->getValidatorChain()->attach(new MimeType(array(
'image/gif', 'image/jpeg', 'image/png', 'enableHeaderCheck' => true,
)));

$this->add($images);

...............


}
}



Форма:

class ProductForm extends Form implements ObjectManagerAwareInterface
{

protected $objectManager;


public function __construct(ObjectManager $objectManager)
{
$this->setObjectManager($objectManager);

parent::__construct(null);
$this->setAttribute('method', 'post');
$this->setAttribute('class', 'form');

...............


$images = new File('images');
$images ->setLabel('Изображения: ');
$this->add($images);

...............

}
}



Контроллер:

public function insertAction ()
{
if (is_string($this->form))
$form = new $this->form;
else
$form = $this->form;

$request = $this->getRequest();

if ($request->isPost()) {

$form->setData(array_merge_recursive(
$this->getRequest()->getPost()->toArray(),
$this->getRequest()->getFiles()->toArray()
));


if ($form->isValid()) {
$service = $this->getServiceLocator()->get($this->service);

if ($service->save(
$this->getRequest()->getPost()->toArray(),
$this->getRequest()->getFiles()->toArray())) {

$this->flashMessenger()->addSuccessMessage('Данные успешно добавлены');
} else {
$this->flashMessenger()->addErrorMessage('Ошибка при добавлении данных');
}

return $this->redirect()->toRoute($this->route, array('controller' => $this->controller, 'action' => 'select'));
}
}


if ($this->flashMessenger()->hasSuccessMessages()) {
return new ViewModel(array(
'form' => $form,
'success' => $this->flashMessenger()->getSuccessMessages(),
));

}

if ($this->flashMessenger()->hasErrorMessages()) {
return new ViewModel(array(
'form' => $form,
'error' => $this->flashMessenger()->getErrorMessages(),
));

}

if ($this->flashMessenger()->hasWarningMessages()) {
return new ViewModel(array(
'form' => $form,
'warning' => $this->flashMessenger()->getWarningMessages(),
));

}

if ($this->flashMessenger()->hasInfoMessages()) {
return new ViewModel(array(
'form' => $form,
'info' => $this->flashMessenger()->getInfoMessages(),
));

}

$this->flashMessenger()->clearMessages();

return new ViewModel(array(
'form' => $form,
));

}


АбстрактныйСервис:

abstract class AbstractService
{

/**
*
@var EntityManager
*/

protected $em;
/**
*
@var
*/
protected $entity;


/**
*
@param EntityManager $em
*/

public function __construct (EntityManager $em)
{
$this->em = $em;
}


/**
*
@param array $data
*
@return bool|\Doctrine\Common\Proxy\Proxy|null|object
*
@throws \Doctrine\ORM\ORMException
*/

public function save (Array $data = array())
{
if (isset($data['id'])) {
$entity = $this->em->getReference($this->entity, $data['id']);
$hydrator = new ClassMethods();
$hydrator->hydrate($data, $entity);

} else {
$entity = new $this->entity($data);
}

$this->em->persist($entity);
$this->em->flush();

return $entity;
}
}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.