我目前正在使用zend框架。需要幫助Zend_Form_Element_File
我正在創建一個新的提供商的形式工作,他們可以上傳一個圖像。
所以我的代碼是在提供程序表中創建一個新的提供程序行,然後檢索提供程序標識以爲提供程序創建新的圖像文件夾。
例如,如果供應商ID = 10的代碼將創建公共/圖片/供應商/ 10
的文件夾,然後將圖像插入新的映像目錄。
問題是,如果我在接收圖像之前刪除$data = $form->getValues();
,它可以工作,但只要$ data = $ form-> getValues()在接收圖像之前就不起作用。
所以我的問題是我該如何解決這個問題,因爲我需要表單值來插入一個新的提供者行,以便將圖像存儲在提供程序目錄中。
有人可以幫我嗎?
非常感謝。
這裏是我的代碼(請注意我在我的形式命名爲「標誌」 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;
}
}