0

我的 symfony2 项目中有一个表格。该表单包含 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';
            }

        }
....
4

0 回答 0