我必须创建一个网站来下载软件包。 有一个帐户系统(本地或CAS身份验证)。
我使用VichUploaderBundle分发文件。然后从控制器分发它们,以便可以相应地修改数据库。
我有一个用户实体和一个包实体。 用户包含一个ArrayCollection()的程序包(许多对象)。
如果下载了软件包,则将下载的软件包添加到其arrayCollection()。
问题是这样的,当我的用户单击要下载的软件包时,数据库被正确修改,但是下载没有开始,并且重定向到一个奇怪的页面:
我不明白这是什么吗?
这是我的代码:
/**
* Lorsque l'on clique sur un package à télécharger ou sa notice : Téléchargement
*
* @Route("/{id}/{type}/file", name="user_paquet_fileDDL")
*/
public function paquetFileAction(Paquet $paquet, $type)
{
// $em = $this->getDoctrine()->getManager(); //Récupération du manager
//$this->getDoctrine()->getManager()->getRepository('PagesBundle:User')->setDDL("loughin.bastien"); //On décrémente le nombre de DDL pour l'utilisateur en question
// $user = $this->getUser();
$downloadHandler = $this->get('vich_uploader.download_handler'); // On prépare le téléchargement
if($type == "package") //Si l'utilisateur clique sur le lien du package, on lui donne le fichier package
{
$token = $this->get('security.token_storage')->getToken();
$user = $token->getAttribute('user');
// $user = $this->get('serializer')->deserialize($data, 'Site\PagesBundle\Entity\UserCas', 'json');
$this->packageDDL($paquet,$user);
return $downloadHandler->downloadObject($paquet, $fileField = 'paquetFile', Paquet::class, null);
}
else //Sinon c'est qu'il a cliqué sur le lien de la notice, alors on lui donne la notice associée au package
{
return $downloadHandler->downloadObject($paquet, $fileField = 'noticeFile', Paquet::class, null);
}
}
当用户下载文件时,称为“ packageDDL()”函数:
public function packageDDL($paquet,$user)
{
$token = $this->get('security.token_storage')->getToken();
$typeAuth = $token->getAttribute('typeAuth');
dump($user);
$em = $this->getDoctrine()->getManager(); //Récupération du manager
$user->addPackage($paquet);
$em->persist($user);
$em->flush();
if($typeAuth == 'cas')
{
$data = $this->get('serializer')->serialize($user, 'json');
$token->setAttribute('user',$data) ;
}
}
有人可以帮我吗?