我的 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';
}
}
....