访问Symfony2中的HTML表单数据

Mag*_*ity 3 html php forms symfony

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

我的网站上有"联系"表单.这个联系表单提交到路径('submit_query'),它调用submitQueryController.我没有通过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>
Run Code Online (Sandbox Code Playgroud)

控制器:

当我尝试:

public function submitQueryAction(Request $request)
{
    $data = $request->request->all();
    die(var_dump($data));
}
Run Code Online (Sandbox Code Playgroud)

我在"$ data"中得到一个空数组.

当我尝试:

public function submitQueryAction()
{
    $data = $this->getRequest()->request->all();
    die(var_dump($data));
}
Run Code Online (Sandbox Code Playgroud)

我得到了一个Request对象的vardump,但没有一个数据是我的.我还尝试了Symfony2请求对象中的Access POST值所提供的解决方案,以便在不使用对象或实体的情况下获取post值,但是我收到错误"调用未定义的方法Symfony\Component\Form\Form :: bindRequest()".

请帮忙.先感谢您.

Bre*_*wal 5

您缺少name输入的html属性.
如果表单中的元素错过了此属性,则不会发送其数据.

来自w3.org:

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