我正在尝试将复选框中的检查值从视图发送到数据库,但是系统要么全部检查,要么都没有。 我正在使用带有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');
}
任何帮助都将受到高度赞赏。
答案 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');
}