如何检查'已选中'复选框 - php

时间:2017-03-18 11:34:29

标签: php laravel

我正在尝试将复选框中的检查值从视图发送到数据库,但是系统要么全部检查,要么都没有。 我正在使用带有php 5的Laravel 5.3。 这是我的复选框视图

<?php
            foreach($tests as $test) {
                if($test == 1) {
                    echo "<input type='checkbox' name='check' value='1' checked/><br>";
                }               
                else {
                    echo "<input type='checkbox' name='check'/><br>";
                }

            }
        ?>

我检查和附加角色权限的功能是

public function updatepermission($id)
{
    $role = Role::find($id);
    $permissions = Permission::all();
    $role->permissions()->detach();
    foreach ($permissions as $key) {
        if (Input::get('check') === '1') {
            $role->permissions()->attach($key);
        }
    }
    return redirect('role')->with('message','Permissions has been updated');
}

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

回答问题

测试表单中是否已选中复选框的方法是以下代码:

if (Input::has('check')) {
    // your logic here
}

在回答您的问题后,我发现代码中您想要为角色附加权限的问题。如果你有兴趣,我写了一个修复程序:

修复部分

我相当确定您有一个页面,您可以在其中设置角色的权限。这意味着只有一个角色,但有多个权限。我建议你在你看来这样做:

@foreach($permissions as $permission)
    @if ($role->permissions()->contains($permission))
        <input type="checkbox" value="1" name="permissions[{{ $permission->id }}]" checked>
    @else
        <input type="checkbox" value="1" name="permissions[{{ $permission->id }}]">
    @endif
@endforeach

以下是你的控制器:

public function updatepermission(Request $request, $id) {
    $role = Role::find($id);
    $permissions = $request->input('permissions', []);
    $permissionIds = array_keys($permissions);


    $role->permissions()->sync($permissionIds);
    return redirect('role')->with('message','Permissions has been updated');
}