在Zend_Form_Element File方面需要帮助

时间:2011-08-17 16:24:57

标签: zend-framework zend-form

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


         }




    }

1 个答案:

答案 0 :(得分:1)

我想我已经解决了。

不要担心:)

必须添加此行

->setValueDisabled(true);

欲了解更多信息,请访问

http://www.thomasweidner.com/flatpress/2009/04/17/recieving-files-with-zend_form_element_file/