【问题标题】:Symfony Form "POST" -> Retrieve the values ​of a form to enter them in the databaseSymfony Form "POST" -> 检索表单的值以将它们输入数据库
【发布时间】:2021-01-23 19:25:24
【问题描述】:

大家晚上好,

我允许自己与您联系,因为我需要有关在 Symfony 中以“POST”形式检索值的帮助。

此表单的目的是:“用户可以通过填写表单在网站上发表意见”

我的问题:我在我的控制器中进行了测试以执行“功能”,这将允许我从 POST 表单中检索用户发送的信息以将它们发送到我的数据库,但经过几次尝试后,我没有无法在我的数据库中输入信息,除了“NULL”

你能帮帮我吗?提前谢谢你。

我的 HTML.TWIG “POST” 表单:

<div class="col-md-8 mx-auto" id="formavisall">
                <form method="post">
                    <div class="row">
                        {% for message in app.flashes('message') %}
                            <div class="col-md-12" style="text-align: center">
                                <div class="alert alert-success">
                                    {{ message }}
                                </div> <!-- FIN p-3 my-2 rounded-2 success -->
                            </div> <!-- FIN COL-MD-12 (ID MESSAGECONFIRMATIONUSER) -->
                        {% endfor %}
                        {% for message in app.flashes('error') %}
                            <div class="col-md-12" style="text-align: center">
                                <div class="alert alert-danger">
                                    {{ message }}
                                </div> <!-- FIN p-3 my-2 rounded-2 success -->
                            </div> <!-- FIN COL-MD-12 (ID MESSAGECONFIRMATIONUSER) -->
                        {% endfor %}
                        <div class="col-md-12" id="inputradionoteavis">
                            <input type="radio" name="note" id="note" value="1">
                            <label for="note"></label>
                            <input type="radio" name="note" id="note" value="2">
                            <label for="note"></label>
                            <input type="radio" name="note" id="note" value="3">
                            <label for="note"></label>
                            <input type="radio" name="note" id="note" value="4">
                            <label for="note"></label>
                            <input type="radio" name="note" id="note" value="5">
                            <label for="note"></label>
                        </div>
                        <div class="col-md-6" id="inputformcontact">
                            <div class="form-group">
                                <label for="nameavis">Nom :</label>
                                <input type="text" class="form-control" name="nom" id="nom">
                            </div> <!-- FIN form-group -->
                        </div>
                        <div class="col-md-6" id="inputformcontact">
                            <div class="form-group">
                                <label for="firstnameavis">Prénom :</label>
                                <input type="text" class="form-control" name="prenom" id="prenom">
                            </div> <!-- FIN form-group -->
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-12" id="messageareacontact">
                            <div class="form-group">
                                <label for="messageavis">Message :</label>
                                <textarea class="form-control" id="message" name="message"></textarea>
                            </div> <!-- FIN form-group -->
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-12">
                            <div class="form-group">
                                <input type="hidden" name="section" value="content">
                            </div> <!-- FIN form-group -->
                        </div>
                    </div> <br>
                    <div class="row" id="rowbuttoncontact">
                        <div class="col-md-5 mx-auto">
                            <button type="submit" class="form-control" id="buttonformcontact">Laisser un avis</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>

我的控制器中的“测试”功能:

if($request->isMethod('POST')){
            $em = $this->getDoctrine()->getManager();
 
            $avis = new Avis();
 
            // On vérifie si les deux mots de passe sont identiques
 
            if($request->request->get('nom') && $request->request->get('prenom') && $request->request->get('message')
                && $request->request->get('note') && $request->request->get('section')){
                $em->persist($avis);
                $em->flush();
                $this->addFlash('message', 'L\'avis a été publié');
 
                return $this->redirectToRoute('accueil');
            }else{
                $this->addFlash('error', 'L\'avis n\'a pas été publié');
            }
        }

【问题讨论】:

    标签: forms symfony post controller


    【解决方案1】:

    您似乎没有在控制器中更新$avis。您应该尝试在 if 中添加一些内容以设置属性:

    $avis->setNom($request->request()->get('nom'));
    $avis->setPrenom($request->request()->get('prenom'));
    $avis->setMessage($request->request()->get('message'));
    ...
    

    Symfony 中还有一个 Form 组件可以处理这一切,为您省去麻烦:https://symfony.com/doc/current/forms.html

    【讨论】:

    • 晚上好,非常感谢您的帮助,就是这样! :-) 现在看起来更合乎逻辑啊!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2015-09-26
    • 2019-11-21
    • 1970-01-01
    相关资源
    最近更新 更多