以相同的形式上传文件字段:一个工作,而另一个工作

时间:2013-05-30 08:09:43

标签: forms symfony file-upload multiple-files

我的symfony2项目中有一个表单。 表单包含2个文件上载字段,根据用户的单选按钮选项使用。根据此选择,上传的正确文件将复制到用户文件夹中。

我的问题是2个字段中的一个正在工作(复制)而不是另一个。这对我来说很奇怪。

我提供了一些代码(我删除了一些可能不需要的东西)。

这是我的实体:

class MyEntity
{
    private $file1;
    private $file2;

    /**
     * Set file1 
     */
    public function setFile1($file1)
    {
        $this->file1 = $file1;      
        return $this;
    }

    /**
     * Get file of file1
     *
     */
    public function getFile1()
    {
        return $this->file1;
    }

    /**
     * Set file of file1
     */
    public function setFile2($file2)
    {
        $this->file2 = $file2;
        return $this;
    }

    /**
     * Get file of file2
     *
     */
    public function getFile2()
    {
        return $this->file2;
    }
}

我的实体类型:

class MyEntitytype extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('file1', 'file', array('required'  => false));
        $builder->add('file2', 'file', array('required'  => false));
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(
        array(
            'data_class' => 'my\Bundle\Entity\MyEntity',
            'required'  => false
        ));
    }

    public function getName()
    {
        return 'myentitytype';
    }
}

我的控制器部分:

    $form = $this->createForm(
        new MyEntitytype(),
        new MyEntity()
    );

    // check type is « POST ».
    if( $request->getMethod() == 'POST' )
    {
        // link between request and form = hydratation
        $form->bindRequest($request);

        // validation
        if( true )
        {
            $data = $form->getData();

            // get uploaded files, depending type
            $type = $data->getType();
            if( $type == 'dndd' ){
                $filename = 'filename1';
                $data->getFile1()->move($filepath, $filename);
            }elseif( $type == 'dbscreen') {
                $filename = 'filenam2';
                $data->getFile2()->move($filepath, $filename);
            } else {
                return 'failed';
            }

        }
....

0 个答案:

没有答案