【问题标题】:Access HTML form data in Symfony2在 Symfony2 中访问 HTML 表单数据
【发布时间】:2013-10-14 06:30:47
【问题描述】:

我是 Symfony 的新手。我已经看到很多关于这个主题的线程,但没有一个能够回答我的问题。

我的网站上有一个“联系”表单。此联系表单提交给调用 submitQueryController 的 path('submit_query')。我没有通过 Symfony 构建表单,也没有使用对象或实体。我的问题是,无论我做什么,我都无法访问控制器中的表单数据。我已经尝试了我看到的每一个线程建议,我要么得到带有一大堆数据的 REQUEST 对象(这些数据都不是我的表单数据),要么我什么也得不到。

有没有简单的方法可以从控制器中访问发布的表单数据?

我的 HTML 表单:

<form id="contact_form" role="form" action="{{ path('submit_query') }}" method="post">`
<div class="panel-body">
    <fieldset>
        <div class="form-group">
            <label for="name" class="control-label">Name</label>
            <input type="text" class="form-control" id="name" placeholder="Full Name" data-validation-error-msg="Please enter your full name" data-validation="length" data-validation-length="min1">
        </div>
        <div class="form-group">
            <label for="email" class="control-label">Email Address</label>
            <input type="email" class="col-sm-3 form-control" id="email" placeholder="Email Address" data-validation-error-msg="Please enter a valid email address" data-validation="email length" data-validation-length="min1">
        </div>
        <div class="form-group">
            <label for="number" class="control-label">Contact Number</label>
            <input type="text" class="form-control" id="number" placeholder="Contact Telephone Number">
        </div>
        <div class="form-group">
            <label for="subject" class="control-label">Subject</label>
            <input type="text" class="form-control" id="subject" placeholder="The subject of your query" data-validation-error-msg="Please enter a subject for your query" data-validation="length" data-validation-length="min1">
        </div>
        <div class="form-group">
            <label for="query" class="control-label">Query</label>
            <textarea class="form-control" id="query" rows="5" placeholder="Please enter a detailed description of your query" data-validation-error-msg="Please enter your query description" data-validation="length" data-validation-length="min1"></textarea>
        </div>      
    </fieldset>
</div>
<div class="panel-footer clearfix text-center"><button type="submit" class="btn btn-default">Submit Query</button></div>
</form>

控制器:

当我尝试时:

public function submitQueryAction(Request $request)
{
    $data = $request->request->all();
    die(var_dump($data));
}

我在“$data”中得到一个空数组。

当我尝试时:

public function submitQueryAction()
{
    $data = $this->getRequest()->request->all();
    die(var_dump($data));
}

我得到一个 Request 对象的 vardump,但没有一个数据是我的。我还尝试了Access POST values in Symfony2 request object 提出的解决方案,用于在不使用对象或实体的情况下获取帖子值,但我收到错误“调用未定义的方法 Symfony\Component\Form\Form::bindRequest()”。

请帮忙。 提前谢谢你。

【问题讨论】:

    标签: php html forms symfony


    【解决方案1】:

    您的输入缺少 name html 属性。
    如果表单的某个元素缺少该属性,则不会发送其数据。

    来自w3.org

    每个成功的控件都将其控件名称与其当前值配对,作为提交的表单数据集的一部分。成功的控件必须在 FORM 元素中定义,并且必须具有控件名称。

    【讨论】:

    • 呃,如此愚蠢的疏忽。我以为我有他们,但我只有身份证。我已经为此苦苦挣扎了好几个小时!非常感谢。
    • 不客气!您还应该查看Symfony forms 以生成此代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多