简体   繁体   English

仅带有CSRF令牌的表格

[英]Form with CSRF token only

I have a form which require only the CRSF token. 我有一个只需要CRSF令牌的表格。 Other parameters are provided from the URL itself, or are default value. URL本身提供了其他参数,或者它们是默认值。

/**
 * @Route("/projets/projet-{projetId}/accessoires/accessoire-{accessoireId}/new/", name="projetaccessoire_new")
 * @ParamConverter("projet", options={"mapping"={"projetId"="id"}})
 * @ParamConverter("accessoire", options={"mapping"={"accessoireId"="id"}})
 * @Method({"POST")
 *
 * @param Request $request
 * @param Projet $projet
 * @param Accessoire $accessoire
 * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
 */
public function newAction(Request $request, Projet $projet, Accessoire $accessoire) {
    $projetAccessoire=new ProjetAccessoire();
    $form=$this->createForm(ProjetAccessoireType::class, $projetAccessoire, array(
        'action'=>$this->generateUrl('projetaccessoire_new', array('projetId'=>$projet->getId(), 'accessoireId'=>$accessoire->getId())),
        'method'=>'POST',
    ));
    $form->handleRequest($request);

    if($form->isSubmitted() && $form->isValid()) {
        $projetAccessoire->setProjets($projet)
                         ->setAccessoires($accessoire)
                         ->setPosX(0)
                         ->setPosY(0)
                         ->setRotZ(0);

        $em=$this->getDoctrine()->getManager();
        $em->persist($projetAccessoire);
        $em->flush();

        return $this->json(array(
            'message_info'=>array(
                array(
                    'message'=>'Projet enregistré',
                    'type'=>'success',
                ),
            ),
        ));
    }

    return $this->render($this->path.'projetaccessoire_new.html.twig', array(
        'projet'=>$projet,
        'accessoire'=>$accessoire,
        'projetAccessoire'=>$projetAccessoire,
        'form'=>$form->createView(),
    ));
}

The thing is, what should I put in ProjetAccessoireType to have only the CRSF token. 问题是,我应该在ProjetAccessoireType放入什么以仅具有CRSF令牌。
Can someone provide me with an code example? 有人可以给我提供代码示例吗?

For what you're trying to do, you don't need a dedicated form type. 对于您要执行的操作,您不需要专用的表单类型。 Simply use the base type: 只需使用基本类型:

use Symfony\Component\Form\Extension\Core\Type\FormType;

// ...
$form = $this->createForm(FormType::class);

// or
$form = $this->createFormBuilder()->getForm();

This will render an empty form with just the hidden crsf-token input. 这将仅使用隐藏的crsf令牌输入来呈现一个空表单。

I you want only the csrf token wouldn't it be easier to create a form without a data class? 我只想要csrf令牌,没有数据类就可以创建表单吗?

https://symfony.com/doc/current/form/without_class.html https://symfony.com/doc/current/form/without_class.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM