2014-04-04 65 views
0

我想將重命名的文件名保存在數據庫中。
我用zend重命名文件過濾器重命名了文件。
我正在獲取新文件名,但我想將該新文件名分配爲setValue。
我在我的動作助手的一個代碼如下:如何通過重寫保存重命名文件zend getValues()

$upload = new Zend_File_Transfer_Adapter_Http(); 
$fileInfo = $upload->getFileInfo(); 

foreach ($fileInfo as $key=>$val) { 

    if($form->getElement($key)) { 
    $path = $form->getElement($key)->getAttrib('path'); 
    $getFilePath = Application_Model_File::getFilePath($path); 
    $filename = $upload->getFilename(); 

    $filterRename = new Zend_Filter_File_Rename(array('target' => $getFilePath.$val['name'], 'overwrite' => false,'fileName'=>$val['name'],'prefix'=>$key,'path'=>$getFilePath)); 
    $upload->setDestination($getFilePath); 
    $upload->addFilter($filterRename); 


    try { 
    $upload->receive($key); 
    $FinalUploadedArray = $upload->getFileInfo(); 
    $newFileName = $FinalUploadedArray[$key]['name']; 

    $form->getElement($key)->setValue($newFileName); 
     } catch (Zend_File_Transfer_Exception $e) { 
       echo $e->message(); 
    } 
    } 
} 

我想分配新的文件名作爲文件的形式元素的setValue方法。
因此,一旦我在我的控制器部分執行$formData = $form->getValues();,我將獲取新文件名作爲相應表單文件元素的值。
我在這裏呆了兩天。

感謝您的幫助球員。

+0

感謝ITI的TYAGI在適當的方式編輯我的問題。任何人都可以有任何想法如何設置新的文件名的價值,所以我可以在getValues()。 –

+1

你爲什麼需要將它分配給表單?你不能把這個值用模型查詢存儲在db中嗎? –

+0

嗨龍,感謝您的回覆。我不想在自定義操作助手中做任何模型或查詢。當我在我的控制器部分中獲取值時,我得到了原始文件名,所以我想用我的重命名文件名替換它,爲此我嘗試setValue,但它的工作方式並不如我所想。 –

回答

0

以及你在數據庫中直接存儲新的價值正如我在評論所說,

爲您的解決方案似乎有些奇怪,如果沒有適合你,那麼你可以使用zend session到新的值傳遞給控制器。

//在會話中設置值

 $session = new Zend_session_Namespace('session'); 
     $session->newval = $newVal; 

//從會議

 $session = new Zend_session_Namespace('session'); 
     $newVal = $session->newval ; 

價值更多地瞭解Zend的會議HERE

+0

你好龍,感謝你的時間。我剛纔知道zend文件表單元素不支持setValue屬性。要按照我的要求進行這項工作,我必須在自定義庫中重寫Zend_Form_Element_File類的setValue方法。之後,我可以使用任何Zend文件表單元素的setValue屬性。謝謝。 –