Zend form Zend-inputfilter获取随机名称

Zend form Zend-inputfilter获取随机名称,zend-form,zend-framework2,Zend Form,Zend Framework2,你好,我正在用输入文件尝试ZF2表单 我有一个带有文件输入的表单,我想在数据库中插入随机名称 如何返回随机名称? 谢谢 这是一个简单的表单类: class OrdineForm extends Formhttp://stackoverflow.com/questions/ask public function __construct($name = null) { parent::__construct('ordine'); $this->setAttribut

你好,我正在用输入文件尝试ZF2表单

我有一个带有文件输入的表单,我想在数据库中插入随机名称

如何返回随机名称? 谢谢

这是一个简单的表单类:

    class OrdineForm extends Formhttp://stackoverflow.com/questions/ask

public function __construct($name = null)
{

    parent::__construct('ordine');
    $this->setAttribute('method', 'post');
    $this->addElements();
    $this->addInputFilter();

}
public function addElements(){

    $this->add(array(
            'name' => 'pdf',
            'attributes' => array(
                    'type'  => 'text',
                    'disabled' =>'true',
            ),
            'options' => array(
                    'label' => 'PDF',
            ),
    ));


    // FILE INPUT 
    $file = new File('file');
    $file
    ->setLabel('PDF attach')
    ->setAttributes(array(
            'id' => 'file',

    ));
    $this->add($file);

    $this->add(array(
        'name' => 'submit',
        'attributes' => array(
            'type'  => 'submit',
            'value' => 'Add',
            'id' => 'submitbutton',
            'class' => 'btn btn-success'
        ),
    ));
}
public function addInputFilter()
{
    $inputFilter = new InputFilter\InputFilter();
    $fileInput= new FileInput('file');
    $fileInput->setRequired(false);
    $fileInput->getFilterChain()->attachByName(
            'filerenameupload',
            array(
                    'target'    => './public/tmpuploads/',
                    'randomize' => true,
                    "UseUploadname" => true,
            )
    );
    $inputFilter->add($fileInput);

    $this->setInputFilter($inputFilter);
}

}

在控制器中验证表单后,可以使用
$form->getData()

应该有一个键“file”,因为它是您命名的file元素。其中包含一个键“tmp_name”

这将是随机名称

例如:

公共函数uploadfileAction()
{
//获取表单和过滤器
$form=$this->getServiceLocator()->get('SomeModule\form\UploadFileForm');
$filter=$this->getServiceLocator()->get('SomeModule\Form\UploadFileFilter');
$form->setInputFilter($filter->getInputFilter());
如果($this->getRequest()->isPost()){
//将文件与post合并
$post=数组\合并\递归(
$this->getRequest()->getPost()->toArray(),
$this->getRequest()->getFiles()->toArray()
);
//在表单中设置数据
$form->setData($post);
//检查是否有效-表单数据现在将包含新名称
如果($form->isValid()){
变量转储($form->getData());
}
}
}
生成的阵列转储可能如下所示:

数组(13){
[“文件”]=>
阵列(5){
[“名称”]=>
字符串(14)“一些pdf.pdf”
[“类型”]=>
字符串(24)“应用程序/pdf”
[“tmp_名称”]=>
字符串(46)“/public/tmpuploads/new randoming name.pdf”
[“错误”]=>
int(0)
[“大小”]=>
内部(651264)
}
[“提交”]=>
字符串(6)“提交”
[“csrf”]=>
串(32)“4df771bb2fb14e28992a408583745946”
}
然后,您可以执行以下操作:

$formData=$form->getData();
$fileNewLocation=$formData['file']['tmp_name'];
//使用$fileNewLocation执行所需操作