2011-08-17 99 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; 


     } 




    } 

回答