How to use "break" in Blade template?

Asked

Viewed 210 times

0

I’m developing a Checklist modal where the new protocol data will be registered. Each item attribute will be informed by the user and this information will be recorded in the table checklist_protocolo of the database.

But information such as item description and Checklist model is consulted from other tables in the database. The model’s information (table checklist_modelo) I was able to click on the modal, but the item description information (table checklist_item) I could not, because it is necessary to iterate it inside the loop and the data are coming out duplicated.

How to solve this problem? Follow the images that illustrate the problem.

Modal Checklists

inserir a descrição da imagem aqui

Modal Checklists [ERROR] - duplicate data

inserir a descrição da imagem aqui

Model ER < inserir a descrição da imagem aqui

Follow the excerpts of the codes responsible for executing this functionality.

Edit method of the Projectocontroller.php class:

     //Método que  redireciona para a página de editar o  Projeto
     public function edita($id, Request $request)
     {  
        $projetoCriado = Projeto::findOrFail($id);

        $this->flagStatusDoc =   $projetoCriado->status_documentacao == 'A' ? true : false;
        $this->flagAprovacao =   $projetoCriado->situacao_projeto == 'AP' ? true : false;
        $this->flagStatusPagamento  =  $projetoCriado->usu_auto_pag_id != null &&  $projetoCriado->dt_pag_autorizado != null ? true : false;
        $flagHabilitaEmenda  =  $projetoCriado->valor_interno == 0 ? false : true;
        $flagHabilitaTabsFinanceiro  =  $projetoCriado->projeto_atividade_id  == null && $projetoCriado->elemento_despesa_id == null && $projetoCriado->fonte_recurso_id == null
        && $projetoCriado->dt_ordenador == null &&  $projetoCriado->valor_ordenador  == 0 ? false : true;

        $usuarios = User::where('autoriza', '=', 'S')->get(); // armazena todos os usuários que tem permissão de autorização (autoriza = S)
        $usuariosAtivos = User::all(); // armazena todos os usuários cadastrados no sistema
        $setores = Setor::all();
        $proponentes = Proponente::all(); 
        $tipoProjetos = TipoProjeto::all(); 
        $modalidadeApoios = ModalidadeApoio::all();


        $ocorrencias =  DB::table('ocorrencias')
            ->join('users', 'users.id', '=', 'ocorrencias.usuario_id')
            ->where('ocorrencias.projeto_id','=',  $id )
            ->select('ocorrencias.id', 'ocorrencias.origem', 'ocorrencias.tipo', 'users.name', 'ocorrencias.descricao', 'ocorrencias.dt_ocorrencia' )
            ->get();


        $categoriaInstrumentos = CategoriaInstrumento::all();
        $modalidadeLicitacoes = ModalidadeLicitacao::all();

        $historicoErratas = HistoricoErrata::where('projeto_id', '=',  $id)->get();
        $historicoNotificacoes = HistoricoNotificacao::where('projeto_id', '=',  $id)->get();

        $projetoAtividades = ProjetoAtividade::all();
        $elementoDespesas = ElementoDespesa::all();
        $fonteRecursos = FonteRecurso::all();

        $detalhamentoEmpenhos = DetalhamentoEmpenho::where('projeto_id', '=',  $id)->get();
        $detalhamentoLiquidacoes = DetalhamentoLiquidacao::where('projeto_id', '=',  $id)->get();
        $detalhamentoPagamentos = DetalhamentoPagamento::where('projeto_id', '=',  $id)->get();
        $detalhamentoEmendas = DetalhamentoEmenda::where('projeto_id', '=',  $id)->get();

        $localidades = Localidade::all(); 
        $localidadesAtivas = Localidade::where('ativo', '=', 'S')->orderBy('localidade', 'asc')->get(); 


        $permissoesAprovacao = verificarPermissao('Aprovação');
        $permissoesJuridico = verificarPermissao('Juridico');
        $permissoesGestaoContrato = verificarPermissao('Gestão Contratos e Convênios');
        $permissoesFinanceiro = verificarPermissao('Financeiro');
        $permissoesOcorrencia = verificarPermissao('Ocorrência'); 
        $permissoesAbas= verificarPermissao('Abas do Projeto'); 
        $permissoesDadosGeraisProj= verificarPermissao('Dados Gerais do Projeto'); 



        //Variáveis da funcionalidade "Movimentar Projeto"
       $movimentacaoResponsavel = MovimentacaoResponsavel::where('projeto_id', '=',$id)->orderBy('dt_movimentacao','desc')->first();
       $usuarioDestino = empty($movimentacaoResponsavel) ? Auth::user() :  User::where('id','=', $movimentacaoResponsavel->usu_destino_id)->first(); 
       $usuarioResponsavel =   $usuarioDestino;

       $checklistsModelo = ChecklistModelo::all();
       $checklistsEstrutura = ChecklistEstrutura::all();

       $checklistsEstruturaModelo =  ChecklistModelo::whereIn('id', $checklistsEstrutura->pluck('modelo_id'))->get();


        $statusDocumentacao =  $projetoCriado->status_documentacao == 'P' ? 'Pendente' : 'Autorizado';
        $statusProjeto =  $projetoCriado->situacao_projeto;

        switch ($statusProjeto){
            case 'AA':
                $statusProjeto = 'Aguardando Autorização';

            break;
            case 'AP':
                $statusProjeto = 'Aprovado';
            break;
            case 'CS':
                $statusProjeto = 'Cancelado Suspenso';
            break;
            case 'RP':
                $statusProjeto = 'Reprovado';
            break;
            default:
                $statusProjeto = 'Aguardando Autorização';
            break;
            }

        $userAutorizaDoc = User::find($projetoCriado->usu_autoriza_doc_id); 
        $usuarioAutorizaDoc =  $userAutorizaDoc == null ?  'Indefinido' : $userAutorizaDoc->name ;

        $userAutorizaProjeto = User::find($projetoCriado->usu_situacao_id); 
        $usuarioAutorizaProjeto =   $userAutorizaProjeto == null ?  'Indefinido' : $userAutorizaProjeto->name ;

        $userAutorizaPagamento = User::find($projetoCriado->usu_auto_pag_id); 
        $usuarioAutorizaPagamento =   $userAutorizaPagamento == null ?  'Indefinido' : $userAutorizaPagamento->name ;

        $countLocalidadesProjeto = count(LocalidadeProjeto::where('projeto_id','=',$id)->distinct()->get());
        $localidadesProjeto = Localidade::join('localidades_projeto', function ($join) use ($id) {
                            $join->on('localidade.id','=','localidades_projeto.localidade_id')
                            ->where('localidades_projeto.projeto_id','=',  $id ); })->distinct()->get();  


        //Variáveis da aba de Aprovação
        $valorEmenda = DB::table('emendas_detalhes')
                    ->where('projeto_id', $id)
                    ->sum('valor');



       $valorAprovado = $valorEmenda + $projetoCriado->valor_aprovado_total;
       $checklistsItens = ChecklistItem::all();

       //Variáveis da aba de Financeiro
       $valorEmpenho = DB::table('detalhamento_empenho')
                    ->where('projeto_id', $id)
                    ->sum('valor_empenho');

       $valorLiquidacao = DB::table('detalhamento_liquidacao')
                    ->where('projeto_id', $id)
                    ->sum('valor_liquidacao');

       $valorPagamento = DB::table('detalhamento_pagamento')
                    ->where('projeto_id', $id)
                    ->sum('valor_pagamento');


       //Contador do Checklist de Protocolo
       $countChecklistProtocolo = count(ChecklistProtocolo::where('projeto_id','=', $id)->distinct()->get());  


       $checklistProtocolo =  ChecklistProtocolo::where('projeto_id','=', $id)->distinct()->get();

       $arrayChecklistProtocolo = [];
       $arrayChecklistProtocolo =  (array) array_values($checklistProtocolo->toArray());


       //Modelo do Protocolo
      $modelo = ChecklistModelo::where( 'id','=',$arrayChecklistProtocolo[0]['modelo_id'])->distinct()->get();
      $modeloProtocolo = (array) array_values($modelo->toArray());



      //Consulta de todos os 'id' de itens do modelo selecionado
      $itens_id = DB::table('checklist_estrutura')
      ->where('checklist_estrutura.modelo_id','=', $modeloProtocolo[0]['id'])
      ->select('checklist_estrutura.itens_id' )
      ->get();



      //Converte o conjunto de dados para Array
      $array_itens_id = (array) array_values($itens_id->toArray());

      $arrayIdItens = [];
      foreach ($array_itens_id  as $item) {
          $arrayIdItens[] = $item->itens_id;
      }

      //Consulta  de todos as descrições do itens (descricao_item) do modelo selecionado
      $array_descricao_item =  DB::table('checklist_itens')->whereIn('id',$arrayIdItens)->get();



      $arrayItens = [];
      $arrayItens =  (array) array_values($array_descricao_item->toArray());

    //dd($arrayItens);

   // dd($checklistProtocolo);

  /*   
     foreach ($checklistProtocolo as $chktProtocolo) {
              $protocolo =  new stdClass;
              $protocolo->projeto_id =  $arrayChecklistProtocolo ;
              $protocolo->modelo_id =  $modeloProtocolo[0]['id'];
              $protocolo->modelo_nome =  $modeloProtocolo[0]['modelo'] ;
              $protocolo->item =  $chktProtocolo->item;
              $protocolo->item_descricao_id = $chktProtocolo->item_descricao_id ;
              $protocolo->item_nome = "bffff";
              $protocolo->sim_nao = $chktProtocolo->sim_nao;
              $protocolo->nao_atende = $chktProtocolo->nao_atende ;
              $protocolo->dt_validade = $chktProtocolo->dt_validade ;
              $protocolo->pagina_documento = $chktProtocolo->pagina_documento ;
              $protocolo->observacao = $chktProtocolo->observacao ; 
    } */

    //  foreach ($array_descricao_item  as $itens) {  
  // dd($protocolo->projeto_id);




        return view('admin.projeto.edita', ['projeto' => Projeto::find($id), 'permissoesAprovacao' =>  $permissoesAprovacao, 'permissoesJuridico' => $permissoesJuridico,
                'permissoesGestaoContrato' =>  $permissoesGestaoContrato , 'permissoesFinanceiro' => $permissoesFinanceiro,
                'permissoesOcorrencia'=> $permissoesOcorrencia, 'permissoesDadosGeraisProj' => $permissoesDadosGeraisProj,
                'permissoesAbas' =>  $permissoesAbas, 'setores' => $setores, 'proponentes' => $proponentes, 'tipoProjetos' => $tipoProjetos, 'usuarios' => $usuarios, 'usuariosAtivos' => $usuariosAtivos,
                'localidades' => $localidades,'modalidadeApoios' => $modalidadeApoios, 'usuarioResponsavel'=>$usuarioResponsavel,'statusDocumentacao'=>$statusDocumentacao,
                'usuarioAutorizaDoc' => $usuarioAutorizaDoc,'localidadesAtivas'=> $localidadesAtivas,'flagHabilitaEmenda'=> $flagHabilitaEmenda, 'flagHabilitaTabsFinanceiro' => $flagHabilitaTabsFinanceiro,
                'flagStatusDoc' =>$this->flagStatusDoc, 'flagAprovacao' =>  $this->flagAprovacao, 'flagStatusPagamento' => $this->flagStatusPagamento,
                'countLocalidadesProjeto' =>  $countLocalidadesProjeto, 'localidadesProjeto' => $localidadesProjeto, 'statusProjeto' => $statusProjeto, 'usuarioAutorizaProjeto' =>  $usuarioAutorizaProjeto,
                'usuarioAutorizaPagamento' => $usuarioAutorizaPagamento, 'categoriaInstrumentos' => $categoriaInstrumentos, 'modalidadeLicitacoes' => $modalidadeLicitacoes,
                'historicoErratas' => $historicoErratas, 'historicoNotificacoes' =>    $historicoNotificacoes, 'checklistsEstruturaModelo' =>  $checklistsEstruturaModelo,
                'projetoAtividades' => $projetoAtividades, 'elementoDespesas' => $elementoDespesas, 'fonteRecursos' =>  $fonteRecursos,
                'detalhamentoEmpenhos' => $detalhamentoEmpenhos, 'detalhamentoLiquidacoes' => $detalhamentoLiquidacoes, 'detalhamentoPagamentos' => $detalhamentoPagamentos,
                'detalhamentoEmendas' =>  $detalhamentoEmendas , 'valorEmenda' => $valorEmenda, 'valorAprovado' =>  $valorAprovado, 'valorEmpenho' => $valorEmpenho,
                'valorLiquidacao' => $valorLiquidacao, 'valorPagamento' => $valorPagamento, 'ocorrencias' => $ocorrencias, 'countChecklistProtocolo' => $countChecklistProtocolo,
                'checklistsModelos' => $checklistsModelo, 'checklistsEstruturas' => $checklistsEstrutura, 'checklistsItens' =>  $checklistsItens,
                'checklistsProtocolos' => $checklistProtocolo,'arrayItens' => $arrayItens, 'modeloProtocolo' => $modeloProtocolo]);
     }

Page edita.blade.php: I tried to put the variable break conditional to exit the item description name but an error occurred.

 <!--Inicio do modal de Checklist do Projeto--> 
  <div class="modal fade modal-default" id="modalChecklist" aria-hidden="true" aria-labelledby="examplePositionCenter"
                 role="dialog" tabindex="-1">
                <div class="modal-dialog2 modal-center">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                <span aria-hidden="true">×</span>
                            </button>
                            <h4 class="modal-title">Checklists</h4>
                        </div>
                        <div class="form-group col-md-4">
                             <input type="hidden" id="idProjeto" name="idProjeto" value="{{$projeto->id}}">
                             <input type="hidden" id="idModeloProcesso" name="idModeloProcesso" value="{{$modeloProtocolo[0]['id']}}">
                             <label class="control-label">Modelo</label>
                            <input type="text" class="form-control" name="modeloProcesso" value="{{$modeloProtocolo[0]['modelo']}}" disabled>
                        </div>
                        <div class="modal-body">
                        <div class="form-group col-md-18">
                             <input type="hidden" id="idProjeto" name="idProjeto" value="{{$projeto->id}}">
                             <table id="checklist" class="table table-hover table-striped table-responsive toggle-arrow-tiny" >
                                <caption></caption>
                                    <thead>
                                        <tr>
                                            <th>Item</th> 
                                            <th>Descrição</th>
                                            <th>Sim/Não</th>
                                            <th>Não Atende</th>
                                            <th>Data de Validade</th>
                                            <th>Página do Documento</th>
                                            <th>Observações           </th>
                                            <th class="text-center"></th>
                                        </tr>
                                    </thead>
                                    <tbody id="bodyUsers">

                                @foreach($checklistsProtocolos as $checklistProtocolo)
                                 @foreach($arrayItens as $item) 
                                   <tr>
                                       <td><input type="text" class="form-control" name="item_protocolo" value="{{$checklistProtocolo->item}}"  size ="2"></td>
                                       <td>{{$item->id == $checklistProtocolo->item_descricao_id ? $item->descricao_item :  break }}</td>   


                                       <td><input type="checkbox" name="simNao_protocolo"{{$checklistProtocolo->sim_nao == null ? '' : 'checked'}}></td>
                                       <td><input type="checkbox" name="naoAtende_protocolo" {{$checklistProtocolo->nao_atende == null ? '' : 'checked'}} ></td>
                                       <td><input type="date" class="form-control" name="dtValidade_protocolo" value="{{$checklistProtocolo->dt_validade}}"></td>
                                       <td><input type="text" class="form-control" name="paginaDoc_protocolo" value="{{$checklistProtocolo->pagina_documento}}" size ="1"></td>
                                       <td><input type="text" class="form-control" name="paginaDoc_protocolo" value="{{$checklistProtocolo->observacao}}" size ="1"></td>

                                   </tr>
                                    @endforeach 
                                 @endforeach
                               </tbody>
                        </table>



                        </div>

                        </div><!--Fim do modal-body-->

                        <div class="modal-footer">
                        <center>
                            <a id="btnSalvarChecklist" type="button" class="btn btn-primary salvarChecklist" data-dismiss="modal"  align="center" style="width: 300px; height: 40px">Salvar</a>
                        </center>
                        </div>
                    </div>
                </div>
            </div>
  <!--Fim do modal do Checklist do Projeto-->      



Appserviceprovider.php class

The command break is not supported in the Laravel version I am using, right within the method boot() class AppServieProvider i define the following function.

public Function boot() { Blade::Directive('break', Function() { Return ""; }); }



<?php

namespace App\Providers;
use Blade;
//use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
  /*   public function boot()
    {
        //
    } */
    public function boot()
    {
        Blade::directive('break', function() { return "<?php break; ?>"; });
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

ERROR: but error shown in this image occurred.

inserir a descrição da imagem aqui

  • Which version of the Laravel are you using? apparently looks like 5.6, I’m sure?

  • Hello @Alvaroalves, the Laravel Framework version is 5.5.28

1 answer

0

I put as an answer because it would not fit in the comment: from what I understand, if you don’t have the id it has to break, you do so:

@foreach($arrayItens as $item) 
    <tr>
      <td><input type="text" class="form-control" name="item_protocolo" value="{{$checklistProtocolo->item}}"  size ="2"></td>
      <td>{{$item->id == $checklistProtocolo->item_descricao_id ? $item->descricao_item :  break }}</td>   
      <td><input type="checkbox" name="simNao_protocolo"{{$checklistProtocolo->sim_nao == null ? '' : 'checked'}}></td>
      <td><input type="checkbox" name="naoAtende_protocolo" {{$checklistProtocolo->nao_atende == null ? '' : 'checked'}} ></td>
      <td><input type="date" class="form-control" name="dtValidade_protocolo" value="{{$checklistProtocolo->dt_validade}}"></td>
      <td><input type="text" class="form-control" name="paginaDoc_protocolo" value="{{$checklistProtocolo->pagina_documento}}" size ="1"></td>
      <td><input type="text" class="form-control" name="paginaDoc_protocolo" value="{{$checklistProtocolo->observacao}}" size ="1"></td>
  </tr>
@endforeach 

If it’s done like this it wouldn’t solve your problem?

@foreach($arrayItens as $item)
    @if($item->id != $checklistProtocolo->item_descricao_id)
        <?php break 1; ?>
    @endif
    <tr>
      <td><input type="text" class="form-control" name="item_protocolo" value="{{$checklistProtocolo->item}}"  size ="2"></td>
      <td>{{$item->descricao_item}}</td>   
      <td><input type="checkbox" name="simNao_protocolo"{{$checklistProtocolo->sim_nao == null ? '' : 'checked'}}></td>
      <td><input type="checkbox" name="naoAtende_protocolo" {{$checklistProtocolo->nao_atende == null ? '' : 'checked'}} ></td>
      <td><input type="date" class="form-control" name="dtValidade_protocolo" value="{{$checklistProtocolo->dt_validade}}"></td>
      <td><input type="text" class="form-control" name="paginaDoc_protocolo" value="{{$checklistProtocolo->pagina_documento}}" size ="1"></td>
      <td><input type="text" class="form-control" name="paginaDoc_protocolo" value="{{$checklistProtocolo->observacao}}" size ="1"></td>
  </tr>
@endforeach 
  • Hi, @Alvaro Alves, I took the test as you recommended. But it didn’t work because only the first record was printed and the rest were not shown. I believe that the break function left the two loops instead of just leaving the first loop.

  • I’ll make a change, it might work, just a moment :D

  • try using break 1, as in php documentation is able to function for what you want

  • I used the break as suggested, but the data was duplicated as in the second image of this question.

  • Hello, @Alvaro Alves. Thanks for the return. I tested <?php break 1; ? >, but only 1 entry appeared.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.