Context:
Home
I am creating the "Refresh Structure" method, depending on the selected template the items should be marked in CheckBox . But for some reason it is not working. How to solve this problem?
ChecklistController.phpControllereditsmethod:
//MétodoqueredirecionaparaapáginadeatualizarochecklistEstruturapublicfunctionedita($id){$checklistEstrutura=DB::table('checklist_estrutura')->join('checklist_modelo','checklist_modelo.id','=','checklist_estrutura.modelo_id')->join('checklist_itens','checklist_itens.id','=','checklist_estrutura.itens_id')->select('checklist_itens.id')->where('modelo_id','=',$id)->groupBy('checklist_estrutura.estrutura_id','checklist_itens.descricao_item')->distinct()->get();$checklistEstruturaArray=$checklistEstrutura->toArray();$checklistEstruturaModelo=ChecklistEstrutura::where('modelo_id','=',$id)->first();$modeloId=$checklistEstruturaModelo->modelo_id;returnview('admin.checklistEstrutura.edita',['checklistEstruturaModelo'=>$modeloId,'checklistsModelos'=>ChecklistModelo::all(),'checklistsItens'=>ChecklistItem::all(),'checklistsEstruturas'=>$checklistEstruturaArray]);}
DebugResultofvariable"$ checklistArray Structure"
edita.blade.phppage
Thiscodesnippetverifiesthatthe$checklistItemArrayisinthe$checklistsStructuresarray.Ifitdoes,itarrowsthecomboBox.But,itdidnotwork.
{{in_array($checklistItem,$checklistsStructure)?'checked': ''}}
@section('content')<divclass="page-content">
<div class="panel">
<div class="panel-body container-fluid">
@include('admin.includes.alerts')
<form method="POST" action="{{ route('checklistEstrutura.atualiza') }}">
<font color="black">
{{csrf_field()}}
<div class="row form-group">
<input type="hidden" name="id" value="{{$checklistEstruturaModelo}}">
<div class="col-md-4">
<label for="inputName" class="control-label">Modelo</label>
<select type="text" class="form-control" name="modelo_id" id="modelo_id" >
<option value="">Selecione</option>
@foreach($checklistsModelos as $checklistModelo)
<option value="{{$checklistModelo->id}}" {{$checklistModelo->id == $checklistEstruturaModelo ? 'selected' : ''}}>{{$checklistModelo->modelo}}</option>
@endforeach
</select>
</div>
</div>
<div class="row form-group col-md-12">
<label>Itens</label>
<br/> <br/>
@foreach($checklistsItens as $checklistItem)
<div class="col-md-12">
<div class="checkbox-custom">
<input type="checkbox" name="itens_id[]" value="" {{ in_array($checklistItem , $checklistsEstruturas) ? 'checked' : ''}} />
<label for="inputUnchecked">{{$checklistItem->descricao_item}}</label>
</div>
</div>
@endforeach
</div>
<div class="text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-floppy-o" aria-hidden="true"></i> Salvar</button>
<a href="{{route('admin.checklistEstrutura')}}" class="btn btn-default"><i class="fa fa-ban" aria-hidden="true"></i> Cancelar</a>
</div>
</font>
</form>
</div>
</div>
</div>
@stop
TemplateChecklistStructure.php
<?phpnamespaceApp\Models;useIlluminate\Database\Eloquent\Model;useDB;classChecklistEstruturaextendsModel{protected$table="checklist_estrutura";
protected $primaryKey = 'Estrutura_id';
public $incrementing = false;
public $timestamps = false;
public function checklistEstrutura()
{
// return $this->belongsTo('App\Models\ChecklistEstrutura', 'estrutura_id','modelo_id', 'itens_id');
return $this->belongsTo(ChecklistEstrutura::class, 'Estrutura_id','modelo_id', 'itens_id');
}
//Este método salva os dados do Checklist da Estrutura
public function salvar(ChecklistEstrutura $checklistEstrutura) : Array
{
$checklistEstrutura = $this->save();
if($checklistEstrutura){
return[
'success' => true,
'message' => 'Sucesso ao cadastrar'
];
}
else{
return[
'success' => false,
'message' => 'Falha ao cadastrar'
];
}
}
//Este método remove os dados do Checklist da Estrutura
public function deletar(ChecklistEstrutura $checklistEstrutura) : Array
{
$checklistEstrutura = $this->delete();
if($checklistEstrutura){
return[
'success' => true,
'message' => 'Sucesso ao excluir'
];
}
else{
return[
'success' => false,
'message' => 'Falha ao excluir'
];
}
}
//Este método atualiza os dados do Checklist da Estrutura
public function alterar(ChecklistEstrutura $checklistEstrutura) : Array
{
$checklistEstrutura = $this->save();
if($checklistEstrutura){
return[
'success' => true,
'message' => 'Sucesso ao atualizar'
];
}
else{
return[
'success' => false,
'message' => 'Falha ao atualizar'
];
}
}
}
Note: The data that must be checked is in the table of Structure Checklist. So I'm consulting all the items registered in the "checklist_itens" table and comparing the data of the items that are listed in the Structure Checklist table.