Reputation: 223
i am trying to get permission all id which is checked by user but unfortunately i am not getting permission ids in proper array format please help me how can i do that ? please my format below thanks.
I want to get permissions ids like this.
{
"_token": "Eo1ByYyiFyrzvTXqqlUUAszTk8AMa8CjC9xpRa0l",
"name": "dfsdfsdf",
"permission": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
}
result of request()->all()
{
"_token": "Eo1ByYyiFyrzvTXqqlUUAszTk8AMa8CjC9xpRa0l",
"name": "dfsdfsdf",
"permission": {
"1": "on",
"2": "on",
"3": "on",
"4": "on",
"5": "on",
"6": "on",
"7": "on",
"8": "on",
"9": "on",
"10": "on",
"11": "on"
}
}
html view
@foreach ($menus as $sub_menu)
@if ($sub_menu->parent_id == $menu->id)
<div class="portlet mb-0">
<div class="portlet-heading bg-light-theme">
<h4 class="portlet-title">
<div class="checkbox">
<input id="{{$sub_menu->name}}" name="permission[{{$sub_menu->id}}]" type="checkbox" class="parent intermediate parent-{{$menu->id}} parentmenu-{{$sub_menu->id}}"
data-id="{{$menu->id}}" data-sub="{{$sub_menu->id}}" >
<label for="{{$sub_menu->name}}">
<span class="text-black">{{$sub_menu->name}}</span>
</label>
</div>
</h4>
<div class="portlet-widgets">
<a data-toggle="collapse" data-parent="#accordion1" href="#UsersRoles" class="text-white">
<i class="ion-minus-round">
</i>
</a>
</div>
<div class="clearfix">
</div>
</div>
<div id="UsersRoles" class="panel-collapse collapse show">
<div class="portlet-body">
@foreach ($menus as $permission)
@if ($permission->parent_id == $sub_menu->id)
<div class="checkbox">
<input id="checkbox{{$permission->id}}" name="permission[{{$permission->id}}]" type="checkbox" class="child parent-{{$menu->id}}"
data-parent-id="{{$menu->id}}" >
<label for="checkbox{{$permission->id}}">
{{$permission->name}}
</label>
</div>
@endif
@endforeach
</div>
</div>
</div>
@endif
@endforeach
Upvotes: 0
Views: 292
Reputation: 4854
array_walk
can help us address the issue in an effective way:
$return = [];
array_walk($request->permission, function ($key, $value) use (&$return) {
if ($key == 'on')
array_push($return, $value);
});
//print_r($return);
$request->permission = $return;
Upvotes: 0
Reputation: 192
You must cycle the permission field, check if the value is "on" and add it to a new variable.
Assuming $r as request().
$veryPermissions = [];
foreach( $r->permission as $permission => $state ) {
if( $state == 'on' ) {
$veryPermissions[] = $permission;
}
}
Now $veryPermissions contains the ids of the permission checked.
NOTE - If you need only the ids of permissions without check if user checked or not, try to use array_keys() function.
Documentation : https://www.php.net/manual/en/function.array-keys.php
:)
Upvotes: 1