我使用fielrenameupload验证和fileprg在我的表单中上传文件。 它工作得很好,但在编辑操作验证失败的文件输入 如何在编辑操作中解决此问题?
这是适用于添加操作的编辑操作:
public function editAction()
{
$id = $this->params()->fromRoute('id',0);
$category = $this->categoryTable->get($id);
$form = $this->getServiceLocator()->get('CategoryForm');
$prg = $this->fileprg($form);
$form->bind($category);
if ($prg instanceof \Zend\Http\PhpEnviroment\Response)
{
return $prg;
}
elseif (is_array($prg))
{
if ($form->isValid())
{
$data = $form->getData();
$data['image'] = $data['image']['tmp_name'];
$category = new CategoryEntity;
$category->exchangeArray($data);
if ($this->categoryTable->save($category))
$this->redirect()->toRoute(null,array('action'=>'index'));
}
}
$view = new ViewModel(array(
'form' => $form,
));
$view->setTemplate('category/admin/add');
return $view;
}
这是文件输入的验证码:
$image = new \Zend\InputFilter\FileInput('image');
$image->getFilterChain()->attachByName('filerenameupload',array(
'target' => 'data/upload/images/category',
'use_upload_name' => true,
'randomize' => true,
));
答案 0 :(得分:1)
添加操作会通过$form->isValid()
验证,因为在表单提交中发布了图像文件。但是,在编辑操作中,它是空的。
为了避免您遇到的问题,请尝试以下方法:
$imageFilter = $form->getInputFilter()->get( 'image' );
$imageFilter->setRequired( false );
请务必将此行放在$form->isValid()
行之前。