获取多个复选框及其父输入字段的值

时间:2020-01-25 09:02:19

标签: javascript html json laravel logic

对于我遇到的情况,我需要一些建议或解决方法。我正在构建一个访问管理系统,其中必须为每个模块定义创建,读取,更新删除的权限。通过定义每个模块的权限,管理员将创建一个角色,该角色将在以后分配给用户。我大约有14个模块,每个模块都具有四个权限,正如我之前提到的。我通过复选框获取每个权限的输入,因此我有几个复选框,其父字段具有每个模块的id。这里有一些代码可以更好地理解我想要实现的目标以及实现该目标的方法。

HTML:

<!-- Iteration loop starts here for rendering each module along with it's checkboxes -->
<tr>
    <th scope="row">{{$mod->m_name}}</th>
    <input type="hidden" name="module_id" value="{{$mod->m_id}}">
    <td><input type="checkbox" name="p_read" value="1"></td>
    <td><input type="checkbox" name="p_create" value="1"></td>
    <td><input type="checkbox" name="p_update" value="1"></td>
    <td><input type="checkbox" name="p_delete" value="1"></td>
</tr>
<!-- Loop ends here -->

查看: rendered view of the above html

JavaScript:

var foo = $('#formAddRole').serializeArray();
var json = {"module" : []};

$.each(foo, (key, obj)=>{
    var arr = {
        "module_id" : 0,
        "permissions" : {
            "create" : 0,
            "read" : 0,
            "update" : 0,
            "delete" : 0,
        }
    };

    if(obj.name == "p_read"){
        arr.permissions.read = 1;
        json.module.push(arr);
    }
    // conditions for 'p_create', 'p_update', 'p_delete' goes here...

    if(obj.name == "module_id"){
        arr.module_id = obj.value;
        json.module.push(arr);
    }
});

我要发送到服务器的JSON结构:

{"modules" : [
    {
        "module_id" : 1,
        "permissions" : {
            "create" : 1, 
            "read" : 1,
            "update" : 1,
            "delete" : 0,
        }
    },
    {
        "module_id" : 2,
        "permissions" : {
            "create" : 0, 
            "read" : 1,
            "update" : 1,
            "delete" : 0,
        }
    },
    // so on...
 ]}

我被困在这一点上。我使用的逻辑对我并不完全有用。有什么更好的方法,如何才能以最好的方式实现呢?任何帮助或建议,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您使用的是PHP,只需按照以下代码重命名您的字段。不需要JavaScript ...

productCodes

这将导致PHP中的$ _GET数组:

<tr>
    <th scope="row">{{$mod->m_name}}</th>
    <input type="hidden" name="modules[0][module_id]" value="{{$mod->m_id}}">
    <td><input type="checkbox" name="modules[0][permissions][p_read]" value="1"></td>
    <td><input type="checkbox" name="modules[0][permissions][p_create]" value="1"></td>
    <td><input type="checkbox" name="modules[0][permissions][p_update]" value="1"></td>
    <td><input type="checkbox" name="modules[0][permissions][p_delete]" value="1"></td>
</tr>
<tr>
    <th scope="row">{{$mod->m_name}}</th>
    <input type="hidden" name="modules[1][module_id]" value="{{$mod->m_id}}">
    <td><input type="checkbox" name="modules[1][permissions][p_read]" value="1"></td>
    <td><input type="checkbox" name="modules[1][permissions][p_create]" value="1"></td>
    <td><input type="checkbox" name="modules[1][permissions][p_update]" value="1"></td>
    <td><input type="checkbox" name="modules[1][permissions][p_delete]" value="1"></td>
</tr>