获取多个复选框值以从TWIG中的MYSQL查看数据

时间:2017-02-15 20:29:31

标签: php html twig symfony

这是我的控制器:

 /**
 * @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进行查询。

Screenshot

<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(内部服务器错误)

提前谢谢。

1 个答案:

答案 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');