这是我的控制器:
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$deployments = $this->getDoctrine()
->getRepository('AppBundle:Billing')
->findAll();
return $this->render('default/index.html.twig', array('deployments' => $deployments));
}
/**
* @Route("/results", name="resultsPage")
*/
public function resultsAction(Request $request)
{
return $this->render('default/results.html.twig');
}
/**
* @Route("/route/action/save", name="route-action-save")
* @Method({"POST"})
*/
public function checkBoxAction(Request $request){
return $arrayTenantID = $request->request->get('allvals');
}
以下代码片段位于我的index.html.twig文件
中<form>
<div id="stuffTable">
<table class="table table-hover" action="" method="post"> <thead>
<script src="{{ asset('bundles/public/js/libs/jquery.min.js') }}"> </script>
<tr> <th>Tenant ID</th>
<th>Tenant</th>
</tr>
</thead>
<tbody>
{% for stuff in deployments %}
<tr>
<th scope="row">
<input type="checkbox" value="{{stuff.tenantID}}" id="tenantID">
<label for="tenantID">{{stuff.tenantID}}</label>
<td>{{stuff.tenantName}}</td>
</th>
</tr>
{% endfor %}
</tbody>
</div>
</table>
<textarea id="textArea"></textarea>
表格(下图)显示了TenantID和TenantName,但是如何使用复选框以便在单击“提交”按钮后,另一个表格将仅显示已检查的TenantID的数据?
为了使我的问题更清楚一点,如何在检查TenantID值之后保存它,这样我可以用它来查询同一个表?我正在使用Doctrine进行查询。
<script>
function updateTextArea() {
var allVals = [];
$('#stuffTable :checked').each(function() {
allVals.push($(this).val());
});
$('#textArea').val(allVals);
sendData(allVals);
}
$(function() {
$('#stuffTable input').click(updateTextArea);
updateTextArea();
});
function sendData(allVals) {
$.ajax({
url: "{{ path('route-action-save') }}",
type: 'POST',
dataType: 'json',
data: {"allVals": allVals},
success: function(response){
alert("hello");
}
});
}
这是我的JavaScript,它似乎给了我一个错误:
http://localhost:8000/route/action/save 500(内部服务器错误)
提前谢谢。
答案 0 :(得分:2)
试试这个,你有租户的表格:
<head>
<script src="jquery-2.2.4.min.js"></script>
</head>
<table class="table table-hover"> <thead>
<tr> <th>Tenant ID</th>
<th>Tenant</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">
<input type="checkbox" name="tenantNum[]" value="1000"> 1000</th>
<td>tenant_Name</td>
</tr>
<tr>
<th scope="row">
<input type="checkbox" name="tenantNum[]" value="1001"> 1001</th>
<td>tenant_Name</td>
</tr>
<tr>
<th scope="row">
<input type="checkbox" name="tenantNum[]" value="1002"> 1002</th>
<td>tenant_Name</td>
</tr>
</tbody>
</table>
<button type="button" id="tenant_id_button" >Ok</button>
现在,您可以使用Jquery并获取多个复选框值(已单击的复选框),然后将其发送到php文件(process_tenant.php)
<script>
$(document).ready(function () {
$('#tenant_id_button').click(function () {
//Get checked Id
var array_tenant_id = new Array();
$("input:checked").each(function () {
array_tenant_id.push($(this).val());
});
//array_tenant_id = ["1000", "1002"]
$.ajax({
url: "process_tenant.php",
method: 'POST',
dataType: 'json',
data: {"array_tenant_id": array_tenant_id},
success: function (data) {
//read response: data
}
});
});
});
</script>
现在,您将获得服务器端(文件process_tenant.php)
的复选框值<?php
$array_tenant_id = $_POST['array_tenant_id'];
var_dump($array_tenant_id);
输出将是一个包含先前已选中复选框的数组:
array(2) (
[0] => (string) 1000
[1] => (string) 1002
)
** 如果您使用Symfony **
包含Jquery库,其中包含html表或将其包含在base.html.twig中
<script src="{{ asset('bundles/public/js/libs/jquery.min.js') }}"> </script>
现在,发送&#39; array_tenant_id&#39;作为控制器的参数:
$.ajax({
url: "{{ path('route-action-save') }}",
method: 'POST',
dataType: 'json',
data: {"array_tenant_id": array_tenant_id},
在控制器中:
/**
* @Route("/route/action/save", name="route-action-save")
* @Method({"POST"})
*/
public function saveSomething(Request $request) {
$array_tenant_id= $request->request->get('array_tenant_id');