我正在使用symfony 2.5& PHP 5.3(旧服务器)
我只是想在我的表单中添加一个输入文件来显示他的路径名,如(C:// pathto / filename)
我在我的类Advert.php中添加了一个属性:
/**
* @ORM\Column(type="string", nullable=true)
*
*/
private $brochure = null;
public function getBrochure()
{
return $this->brochure;
}
public function setBrochure($brochure)
{
$this->brochure = $brochure;
return $this;
}
和我的AdvertType.php:
->add('brochure', 'file', array(
'required' => false,))
但是我觉得我在addAction中遗漏了一些东西,因为它给我带来了一条错误的路径:(/ tmp / phpYAVwMQ)而不是(C:// filename。 pdf)显示{{ advert.brochure }}
public function addAction(Request $request)
{
$advert = new Advert();
$form = $this->createForm(new AdvertType(), $advert);
$usr = $this->get('security.context')->getToken()->getUser();
if ($form->handleRequest($request)->isValid()) {
$em = $this->getDoctrine()->getManager();
$advert->setAuthor($usr->getUsername());
$advert->setDate(new \DateTime);
$em->persist($advert);
$em->flush();
$request->getSession()->getFlashBag()->add('info', 'Annonce bien enregistrée.');
// On redirige vers la page de visualisation de l'annonce nouvellement créée/
return $this->redirect($this->generateUrl('info_view', array('id' => $advert->getId())));
}
return $this->render('SocietyPerfclientBundle:Default:add.html.twig', array(
'form' => $form->createView(),
));
}
请帮帮我:)。
答案 0 :(得分:1)
出于安全原因,您无法获取本地计算机的完整路径(" C:\ pathto"),只需文件名。
在$advert->setDate
行之后添加此行:
$advert->setBrochure($form->get('brochure')->getData()->getClientOriginalName());
答案 1 :(得分:0)
Symfony'文件'输入类型用于文件上传。如果您的网络服务器上的文件已放置的位置,它为您提供的路径。
有关使用未维护的Symfony v2.5的Documentation可用,并提供有关上载文件的可用信息的示例,包括原始文件名。
将项目更新至至少长期支持版本2.7应该在要做的事情列表的早期,然后到3.3 +,通过2.8和3.0。