如何通过覆盖getValues()保存重命名文件zend

时间:2014-04-04 07:10:40

标签: zend-framework

我想在数据库中保存重命名的文件名。
我用zend重命名文件过滤器重命名了文件。
我正在获取新的文件名,但我想将该新文件名指定为setValue 我的一个动作助手中的代码如下:

$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();,我就会获得新文件名作为相应表单文件元素的值。
我被困在这里最近2天。

谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

你将新值直接存储在数据库中,正如我在评论中建议的那样,

至于你的解决方案似乎有点奇怪,如果没有什么对你有用,那么你可以使用zend session将新值传递给你的控制器。

//在会话中设置值

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

//从会话中获取价值

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

了解有关zend session HERE

的更多信息