How to retrieve checkbox data as "checked"?

0

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



Database Model E.R:


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.

    
asked by anonymous 24.09.2018 / 21:51

1 answer

1

I'll try to explain in a simple way how you should be able to use the sync () method.

  The Model below will be responsible for your 'checklist_itens' table.

class Item extends Model {

    protected $_table = 'checklist_itens';

    public function checklist() {
        return $this->belongsToMany( Modelo::class, 'checklist_estrutura' ); // 1 Parâmetro é o model que será relacionado, 2 parâmetro é a tabela intermediária 
    }

}
  

The Model below will be responsible for your 'checklist_model' table.

class Modelo extends Model {

    protected $_table = 'checklist_modelo';

    public function checklist() {
        return $this->belongsToMany( Item::class, 'checklist_estrutura' ); 
    }

}

In your upgrade method you will use the following.

public function editar( Request $request, $id ) {
    $fields = $request->all();
    $modelo = Modelo::find( $id ); //

    // "checklist" que a gente está chamando aqui é o método que definimos no Model: Modelo
    $modelo->checklist()->sync( $fields['itens_id'] ); // Esse método recebe um array com os ID's.
}
The sync () method already does all the processing to check whether or not the relationship exists, if it exists it removes if it does not create.

    
24.09.2018 / 22:14