Zend Framework 2 - 使用inputfilter的验证器上传时获取新文件名

时间:2016-05-26 16:27:50

标签: file validation zend-framework zend-framework2

我是ZF2的新手,我正在尝试上传文件并使用" randomize"验证器内重命名文件适配器过滤器的选项。

在模型中我有这个:

public function getInputFilter()
    {

        $inputFilter = new InputFilter();
        $inputFilter->add(array(
            'name' => 'picture',
            'required' => call_user_func(function() use ($prize_type_id){
                if(isset($this->picture_old) && !empty($this->picture_old)){
                    return false;
                }
                if(in_array($prize_type_id, array(1,2,3,5))){
                    return true;
                }else{
                    return false;
                }
            }),
            'validators' => array(
                array(
                    'name' => '\Pm\Validators\File\Image',
                    'options' => array(
                            'minSize' => '1',
                            'maxSize' => '1024',
                            'newFileName' => null,
                            'uploadPath' => './public/uploads/images/'
                    )
                )
            )
        ));
.....

在Image验证器中,我有这个:

$renameOptions['randomize'] = true;
$renameOptions['target'] = $uploadPath.$newFileName;
$this->filters[] = new Rename($renameOptions); 
$this->fileAdapter->setFilters($this->filters);
$this->fileAdapter->setValidators($this->validators); 
if ($this->fileAdapter->isValid()) { 
    $this->fileAdapter->receive();
    return $newFileName;
....

如何将$ newFileName值返回给Model,以便将其写入数据库?或者您有其他建议来完成这项工作吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

对于文件输入,有一个特殊的FileInput类。您可以找到文档here。对于文件上传(也是图像),建议在输入过滤器中使用此特殊输入类。

如果您在实施时遇到问题,请发表评论。