0

symfony2 プロジェクトにフォームがあります。フォームには 2 つのファイル アップロード フィールドが含まれており、ユーザーが選択したラジオ ボタンに応じて使用されます。この選択に応じて、アップロードされた適切なファイルがユーザー フォルダーにコピーされます。

私の問題は、2 つのフィールドの 1 つが機能 (コピー) していて、もう 1 つが機能していないことです。私にはとても奇妙です。

いくつかのコードを提供します (必要ではないかもしれないものをいくつか削除しました)。

ここに私のエンティティがあります:

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