2011-08-17 79 views
0

我目前正在使用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; 


     } 




    } 

回答