我目前正在使用zend框架。
我正在处理表单以创建新的提供程序,他们可以将图像上传到它。
所以我的代码是在提供者表中创建一个新的提供者行,然后检索提供者ID,以便为提供者创建一个新的图像文件夹。
例如,如果提供者id = 10,则代码将创建public / images / providers / 10
的文件夹然后将图像插入新的图像目录。
令人担忧的是,如果我在收到图片之前删除了$data = $form->getValues();
,那么它可以正常工作,但只要$ data = $ form-> getValues()在接收图片之前它就无效。
所以我的问题是如何解决这个问题,因为我需要表单值来插入新的提供者行,以便将图像存储在提供者目录中。
有人可以帮帮我吗?
非常感谢。
这是我的代码(请注意我的形式中名为“logo”的zend_form_element_file)
public function processNewProviderAction()
{
$this->_helper->layout->setLayout('admin');
$form = $this->getNewProviderForm();
if ($form->isValid($_POST))
{
$data = $form->getValues();
// Insert into provider table
$createdBy = 1; // need to get the system User Id
$providers = new Application_Model_DbTable_Providers();
$providerId = $providers->insertProvider($data, $createdBy);
if($form->logo->isUploaded())
{
if(isset($providerId))
{
//set the directory for file upload
$directory = APPLICATION_PATH . '/../public/images/providers/' . $providerId;
if(is_dir($directory))
{//directory exist
}
else
{//create directory
mkdir($directory, 0777); //0777 is the default which gives the widest access
}
$adapter = $form->logo->getTransferAdapter();
$fileName = $adapter->getFileName('logo');
//getting the extension
$info = pathinfo($fileName);
$baseName = $info['filename'];
$ext = $info['extension'];
$fileName = $baseName . '.' . $ext;
$attachmentUploadElement = $form->getElement('logo');
$attachmentUploadElement->addFilter('Rename', $directory . '/' . $fileName);
try
{
// upload the file
$form->logo->receive();
}
catch (Zend_File_Transfer_Exception $e) { $e->getMessage(); }
}
}
}
else
{ //Form is invalid
$this->view->form = $form;
}
}
答案 0 :(得分:1)
我想我已经解决了。
不要担心:)
必须添加此行
->setValueDisabled(true);
欲了解更多信息,请访问
http://www.thomasweidner.com/flatpress/2009/04/17/recieving-files-with-zend_form_element_file/