实体有nullable = true。表格必须= false。生成的HTML没有任何必需。
当我离开文件输入时,我收到错误:
说实话,我不知道我应该在哪里寻找...;)找不到该文件。
public function updateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('FortiCoreBundle:Article')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Article entity.');
}
$deleteForm = $this->createDeleteForm($id);
$editForm = $this->createEditForm($entity);
$editForm->handleRequest($request);
// $editForm->isVail() false because have error The file could not be found.
if ($editForm->isValid()) {
实体档案:
/**
* @var string
*
* @ORM\Column(name="path", type="string", length=255, nullable=true)
* @Gedmo\UploadableFilePath
*/
private $path;
/**
* @var string
*
* @Assert\File(
* maxSize="3M",
* mimeTypes={"image/png", "image/jpeg", "image/pjpeg"}
* )
*
* @ORM\Column(name="filename", type="string", nullable=true)
* @Gedmo\UploadableFileName
*/
private $filename;
public function uploadPath()
{
return 'images/article/' . date('Y') . '/' . date('m');
}
public function getRelativePath()
{
if (empty($this->filename)) {
return null;
} else {
return $this->uploadPath() . '/' . $this->filename;
}
}
/**
* Set filename
*
* @param string $filename
* @return Article
*/
public function setFilename($filename)
{
if (!is_null($filename)) {
$this->filename = $filename;
}
return $this;
}
/**
* Get filename
*
* @return string
*/
public function getFilename()
{
return $this->filename;
}
和FormType文件:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
//...
->add('filename', 'file', array(
'label' => 'Zdjęcie',
'required' => false,
'data_class' => null,
'attr' => array(
"class" => 'no-border btn-xs')
))
//...
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Forti\CoreBundle\Entity\Article'
));
}
public function getName()
{
return 'forti_corebundle_articletype';
}
答案 0 :(得分:4)
我知道我迟到了,但解决了我的问题的原因是我错过了form
内的以下内容
ENCTYPE = “多部分/格式数据”
<form method="post" action="{{ path('your_route_name') }}" novalidate enctype="multipart/form-data">
答案 1 :(得分:0)
您应该为文件上载字段和文件路径存储使用不同的类属性。那么一个用于处理文件字段(@Assert ..),另一个用于存储db中的路径(@ORM ...)
要处理表单中的实际文件上载,请使用“虚拟”文件字段。
如果您仍有问题,请尝试不使用Gedmo扩展程序。