目标是通过POST方法发送在表单中输入的用户数据,从而在我的网站上注册闲置用户并将其重定向到支付平台。
我在POST中有一个表单,如果该表单有效,则可用于创建非活动用户。然后,我想将用户从POST中的表单中的数据发送到该URL时,将用户重定向到外部URL。该URL仅接受特定的变量名(这些变量在我的RedirectResponse的关联数组中),并且仅在POST中。
用户将在外部链接上付款,如果付款成功,我稍后将激活用户。我通过发送她的“ ID”来识别付款平台,并且她已经授权了我的域名。
我尝试使用状态为307的RedirectResponse,但我认为无法向其发送POST数据。
* @Route("/{id<\d+>?1}/{slug}", methods={"GET", "POST"}, name="show")
* @Security("is_granted('IS_AUTHENTICATED_ANONYMOUSLY')")
*/
public function show(Offre $offre, $slug, Request $request): Response
{
if ($offre->getSlug() !== $slug) {
return $this->redirectToRoute('site_devenir_vip_show', [
'id' => $offre->getId(),
'slug' => $offre->getSlug(),
], Response::HTTP_MOVED_PERMANENTLY);
}
$utilisateur = new User();
$form = $this->createForm(UserType::class, $utilisateur);
$form->handleRequest($request);
if ($form->isSubmitted() === true) {
if ($form->isValid() === true) {
// TODO: create the inactive User here
// TODO: redirect the user on the payment platform
return new RedirectResponse('https://mywebsite.com', 307, [
'NOM' => $utilisateur->getNom(),
'PRENOM' => $utilisateur->getPrenom(),
'TEL' => $utilisateur->getTel(),
'EMAIL' => $utilisateur->getEmail(),
'PAYS' => $utilisateur->getPays(),
'ID' => 'XXXX',
'ABONNEMENT' => 'XXXX',
]);
}
$this->addFlash('error', 'Le formulaire comporte des erreurs.');
}
return $this->render('site/pages/devenir_vip/show.html.twig', [
'offre' => $offre,
'form' => $form->createView(),
]);
}
我当前已重定向到RedirectResponse中的外部链接,但没有获取参数。你有个主意吗?
答案 0 :(得分:1)
POST
是一种请求方法,而不是响应“方法”。请求具有方法(GET
,POST
,PUT
,PATCH
,HEAD
等),响应具有状态码(200
,{ {1}},404
等。
您可能需要创建付款,方法是使用php的HTTP客户端将数据发送到Gate,然后重定向用户(如果已创建付款)。付款门通常会以您应将用户重定向到的网址作为响应。请参阅您的Gate的API文档。
Symfony默认不包含HTTP客户端(无论如何都不是正确的客户端)。我推荐Guzzle。
模拟代码:
500