Zend Framework 2 での画像のアップロードで問題が発生しています。画像を含むフォームを送信すると、「空の値からデフォルト オブジェクトを作成しています」という警告が表示され、ファイルがフォルダーに保存されません。
画像用の空のフィールドを含むフォームを送信してアップロードすると、コンテンツが DB に保存されます。
参照用にコードを追加しました
public function addAction(){
$form = new Add();
$brand = new Brand();
$form->bind($brand);
$request = $this->getRequest();
if ($request->isPost()) {
$post = array_merge_recursive(
$request->getPost()->toArray(),
$request->getFiles()->toArray()
);
$adapter = new \Zend\File\Transfer\Adapter\Http();
$files = $adapter->getFileInfo();
$mediaFileHttpPostName = 'image-file';
$imageFile = $files[$mediaFileHttpPostName];
$adapter->setDestination('./public/media');
$adapter->addValidator('Extension', false, array('jpge'), $mediaFileHttpPostName);
$adapter->addFilter('Rename',
array(
'target'=> './public/media/'.$imageFile['name'],
'overwrite'=>true),
$mediaFileHttpPostName);
if(!empty($imageFile['name'])){
if (!$adapter->isValid()){
$returnObject->errorMessage = $adapter->getMessages();
$returnObject->result = 0;
} else {
try {
$adapter->receive($mediaFileHttpPostName);
$returnObject->result = 1;
} catch (\Zend\Filter\Exception\InvalidArgumentException $e) {
$returnObject->errorMessage = $e->getMessage();
$returnObject->result = 0;
}
}
}
$form->setData($post );
if ($form->isValid()) {
$recordlist = $this->getServiceLocator()->get('BrandService')->insert($brand,'',$form->getHydrator());
$this->flashMessenger()->addMessage('New brand added!');
return $this->redirect()->toRoute('zfcadmin/shop/brands');
}
}