【发布时间】:2017-11-10 21:27:55
【问题描述】:
我正在学习 Symfony,所以我正在测试使用数据库的各种方法。这个想法是制作包含数据库表中数据的选择下拉列表。 select 中的每个选项都返回表中列的 id 值。下拉列表以这种方式在 View 中定义('find_res' in action 是路由到控制器):
<form action="{{ path('find_res') }}" method="POST" name="formpt">
<select name="patientId">
{% for patient in patients %}
{{dump(patient)}}
<option value="{{patient.id}}">{{patient.lastname}}{{patient.firstname}}</option><br />
{% endfor %}
</select>
<button type="submit" name="submit">Find results</button>
</form>
因此,对于所选的 patient.id,它应该在表中显示结果,该表在下面的代码中定义为标准 html 表。
在控制器方法中,我从数据库中的表中创建了所有患者的列表,并将其作为参数发送到此视图。这很好用。另外,我不会详细说明如何构建查询,因为问题是我尝试的任何 $request 都不会返回任何内容,只是返回 null。我试过了:
$request->request->get('patientId'); //returns null always
$request->get('patientId'); //also null
我什至尝试在视图中为表单命名,例如“formpt”,然后尝试使用:
$request->request->get('formpt')['patientId'];
还是什么都没有。本次测试代码:
if($request->getMethod() == 'POST' ) {
\Doctrine\Common\Util\Debug::dump($request->request->get('patientId'));
exit;
}
对于我放入“dump”的任何内容,总是返回 NULL 或 string(0) ""。
我做错了什么? 谢谢!
【问题讨论】:
-
您的 HTML 无效。您不能在
select元素中使用<br>,而且您正在其中转储一些数据 ({{dump(patient)}})。修复 HTML 后重试。 -
你是不是故意不使用form component?
-
@prehfeldt 清理了
-
@Yoshi 是的,我尝试将表单放在视图中,似乎更容易定义您想要的外观。我只需要一个下拉菜单,其中包含一张表中的数据。
-
也许试试这个 {{ form_start(form) }} {{ form_end() }} 所以你也可以使用 csrf 令牌来保护你的表单。
标签: php mysql symfony drop-down-menu request