0
I need to return the checkboxes clicked on a view for editing, but I’m having problems. The values even return clicked but the foreach is duplicating the checkboxes causing an option to appear more than once on screen, so I ask:
There is a better way to do this procedure?
I use the Avavel 5.5 framework
see my code.
Screen print. (In the image it is not possible to see the checks marked or duplicated, but I am posting it to facilitate understanding if necessary
View code (Foreach part to display checks)
{{-- percorrendo os valores para verificar qual está preenchido --}}
@foreach($perfisvinculados as $perfil)
{{-- percorrendo a tabela permissoes para exibir os checks--}}
@foreach($permissoes as $keys => $dados_permissoes)
{{-- se o resto da divisão não for par será exibido na coluna A --}}
@if(!($keys % 2))
<tr class="">
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="">
{{-- verificando se o valor do campo permissoes retornado no primeiro foreach é igual ao da tabela permissoes se for marca o check --}}
@if($perfil->permissoes_id == $dados_permissoes->id)
<p><input type="checkbox" class='chk' name="permissoes_id[]" id="permissoes_id" checked value="{{$dados_permissoes->id }}"> {{$dados_permissoes->nome}}</p>
</td>
{{-- se não for exibe o check desmarcado--}}
@else
<p><input type="checkbox" class='chk' name="permissoes_id[]" id="permissoes_id" value="{{ $dados_permissoes->id }}"> {{$dados_permissoes->nome}}</p>
</td>
@endif
{{-- se não será exibido na coluna B --}}
@else
<td></td>
<td class="">
{{-- verificando se o valor do campo permissoes retornado no primeiro foreach é igual ao da tabela permissoes se for marca o check --}}
@if($perfil->permissoes_id == $dados_permissoes->id)
<p><input type="checkbox" class='chk' name="permissoes_id[]" id="permissoes_id" checked value="{{ $dados_permissoes->id }}"> {{$dados_permissoes->nome}}</p>
</td>
{{-- se não for exibe o check desmarcado--}}
@else
<p><input type="checkbox" class='chk' name="permissoes_id[]" id="permissoes_id" value="{{ $dados_permissoes->id }}"> {{$dados_permissoes->nome}}</p>
</td>
@endif
</tr>
@endif
{{-- finalizando o segundo foreach --}}
@endforeach
{{-- finalizando o primeiro foreach --}}
@endforeach
Controller
public function edit($perfis_id)
{
//descriptografando o ID
$perfis_id = decrypt($perfis_id);
// consulta para obter as informações de vínculo do perfil retornando o primeiro registro
// aqui retorna um unico objeto
$perfispermissoes = $this->perfispermissoes->where('perfis_id', '=', $perfis_id)
->first();
// consulta utilizada no primeiro laço foreach para marcar os campos
// aqui retorna um array
$perfisvinculados = $this->perfispermissoes->where('perfis_id', '=', $perfis_id)
->get();
// Recuperando os dados do Perfil para Exibir no Combobox de filtro por Perfil
$perfis = $this->perfis->all();
// recuperando todas as permissões
$permissoes = $this->permissoes->all();
// variavel com o titulo do form
$title = 'Altere as Permissões / Perfis Vínculados';
// variavel com a descrição do form de edição
$desc = 'Altere as permissões vinculadas ao perfil';
return view('paineladmin.perfis_permissoes.insert-edit', compact('title', 'desc', 'perfispermissoes', 'perfisvinculados', 'perfis', 'permissoes'));
}
It is still possible to delete if Else to display checked inputs.Only handle directly in the input <input type="checkbox" class='chk' name="permissions_id[]" id="permissions_id" value="{{ $permissions_permissions->id }}" {{$permissions_permissions->permissions_id == $dates_permissions->id ? 'checked' : ''}}> {$data_permissions->name}}
– Marcos Xavier
Check out the Laravel Collective also https://laravelcollective.com/docs/master/html
– Marcos Xavier