Symfony2 动态表单字段
Symfony2 dynamic form fields
我想在Symfony2中创建一个表单,该表单根据属于同一表单的组合框中的选定值显示一组单选按钮。
我无法在Symfony2中找到合适的解决方案,使我能够拥有此功能。
有没有办法至少在部分实现中使用Symfony2框架,或者我应该手动生成表单?
你要找的是AJAX。这可以通过直接的javascript或jQuery来实现(jQuery更干净,更易于使用(。
这里有一个jQuery存根,让你了解必须发生的事情:
<script language="javascript">
$('#mySelect').change(function() {
$.post('backgroundScript.php', {
val: $(this).val()
}, function(data) {
$('#radioDiv').html(data);
});
});
</script>
如果你不熟悉AJAX和jQuery,我会解释一下发生了什么。 $('#mySelect')
几乎相当于javascript的getElementById()
函数。它们不是相同的功能(jQuery使用与css相同的符号来查找您要查找的元素(,但这将返回带有mySelect
作为其id属性的元素。
.change()
将 onChange 事件处理程序设置为括号内定义的function()
。 $.post
是jQuery的简写,用于执行AJAX post
(而不是get
(,发送到backgroundScript.php而无需加载页面。当 backgroundScript.php 返回 200 状态(即"一切正常,这是我的输出"(时,它将function(data)
执行回调函数。
backgroundScript.php 将接收 val
作为 $_POST 变量,并执行"某些操作"来确定应显示哪些单选按钮,然后将输出写入屏幕。
编辑 (更多信息(:
backgroundScript.php 如果您基于数据库确定单选按钮,则应如下所示。请记住,编写本文时并未考虑到安全性或考虑已弃用的功能(例如 mysql_*
(,只是功能:
<?php
// backgroundScript.php
$masterVal = $_POST['val'];
$output = "";
$query = "SELECT bt.button_value, bt.button_label
FROM button_table as bt
WHERE bt.button_master_id = " . $masterVal;
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
$output .= "<input type='radio' name='radioGroup' value='" .
$row['button_value'] . "' /> " . $row['button_label'];
}
echo $output;
你可以尝试使用symfony2表单生成器,它允许以编程方式构建表单。
如果您可以在构建表单之前确定实体,这将成为可能......
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 添加和删除隐藏字段数组中的值,而不提交表单
- 单击鼠标,用MySQL数据填充html表单输入字段
- 带有条件字段的PHP表单
- 防止在输入字段上单击事件
- 高级自定义字段按单选按钮值排序
- 使用JQuery启用输入字段的单选框
- SmartyStreets:使用条件字段调整表单中已验证勾号的位置
- 组合功能以使用 Jquery 在一组单选按钮中显示输入字段和单选按钮
- 使只读字段不可单击
- 使用 JavaScript 进行 HTML 字段表单验证
- JavaScript 在不输入输入字段/表单的情况下传递输入
- JQuery 在动态添加输入字段时单击浏览,而 ajax 不起作用
- 我可以让时间选择器在输入字段中单击时触发吗?
- 将隐藏字段表单值传递给控制器
- 隐藏小视口中的字段,单击按钮再次显示
- 我可以给html文本字段表单中的元素提供相同的名称和id吗
- 在新行上显示输入字段(基于单选)
- 在文本字段(表单)后插入节点
- 动态生成的名称字段的单选按钮组验证