我目前正在开发一个symfony2表单,它允许用户在创建文章时添加图片。我创建了一个看起来像这样的形式:表单不允许上传
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('price')
->add('size')
->add('description')
->add('pictures', 'collection', array(
'type' => new PictureType(),
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
'prototype' => true
));
}
的是,当我用这一个,我的表单不允许上传任何图片(我可以添加名称,价格,尺寸,描述,但“加文件”按钮是无处可寻).Picture实体看起来是这样的:
class Picture
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Assert\File(maxSize="6000000")
*/
public $file;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="path", type="string", length=255)
*/
private $path;
/**
* @ORM\ManyToOne(targetEntity="Article", inversedBy="pictures")
* @ORM\JoinColumn(name="property_id", referencedColumnName="id")
*/
protected $article;
形式显示如下:
<form method="post" {{ form_enctype(form) }}>
<br/>
<h1>NEW ARTICLE</h1>
{{ form_widget(form) }}
<input type="submit" class="btn btn-primary send_message" />
</form>
,这是PictureType
class PictureType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name','text',array(
"label" => "Name",
"required" => TRUE,
));
$builder->add('description','textarea',array(
"label" => "Description",
"required" => FALSE,
));
$builder->add('files','file',array(
"label" => "Fichiers",
"required" => FALSE,
"attr" => array(
"accept" => "image/*",
"multiple" => "multiple",
)
));
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Dyma\DesignerBundle\Entity\Picture'
));
}
/**
* @return string
*/
public function getName()
{
return 'dyma_designerbundle_picture';
}
}
这是我第一次在表单中使用集合,所以我甚至不知道它应该是什么样子,但我很确定我的代码有什么问题。任何想法为什么我不能添加这些图片?
我们显示在视图中 – Dai 2014-10-30 14:23:38
表单<形式方法= “POST”{{form_enctype(形式)}}> \t
\t
NEW ARTICLE
\t \t {{form_widget(form)}} \t \t 难以让它更容易:) – 2014-10-30 14:27:50我想@Dai想看到显示的form_enctype。如果它不是多部分,它将根本无法上传文件。 – Chilion 2014-10-30 14:49:02