Return variable inside if to move to view

Asked

Viewed 51 times

0

i want to write a code so that the user chooses an ID in a combobox and specific information is shown in HTML, but I need to do an if to know if the chosen provider is A, B or C, but I can’t return the variable inside the if to pass to view.

follows Controller:

    $id = DB::table('rcis')->pluck('rci_id');
    $rciid = $request->input('idrci');

    $teste = DB::table('rcis')->select('fornecedor_escolhido')->where('rci_id', '=', $rciid)->get(); 

    if($teste=='[{"fornecedor_escolhido":"A"}]'){
        $rci = DB::table('rcis')
        ->join('colaboradors', 'rcis.fk_colaborador', '=', 'colaboradors.colaborador_id')
        ->join('centrocustos', 'rcis.fk_centrocusto', '=', 'centrocustos.centrocusto_id')
        ->join('status_rcis', 'rcis.fk_status_rci', '=', 'status_rcis.status_rci_id')
        ->join('fornecedor_detalhes', 'fornecedor_detalhes.fk_rcid', '=', 'rcis.rci_id')

        ->select('rcis.observacoes',
            'rcis.data_rci',
            'colaboradors.nome_colab',
            'centrocustos.cod_centrocusto',
            'status_rcis.descricao_status',
            'rcis.fornecedor_escolhido',
            'fornecedor_detalhes.valortotalcompra',
            'fornecedor_detalhes.prazo_entrega')
        ->where('rci_id', '=', $rciid)
        ->where('rcis.fornecedor_escolhido','=', 'A')            
        ->wherecolumn('rcis.fornecedor_escolhido','=', 'fornecedor_detalhes.letra')
        ->get();
    }

    elseif($teste=='[{"fornecedor_escolhido":"B"}]'){
        $rci = DB::table('rcis')
        ->join('colaboradors', 'rcis.fk_colaborador', '=', 'colaboradors.colaborador_id')
        ->join('centrocustos', 'rcis.fk_centrocusto', '=', 'centrocustos.centrocusto_id')
        ->join('status_rcis', 'rcis.fk_status_rci', '=', 'status_rcis.status_rci_id')
        ->join('fornecedor_detalhes', 'fornecedor_detalhes.fk_rcid', '=', 'rcis.rci_id')

        ->select('rcis.observacoes',
            'rcis.data_rci',
            'colaboradors.nome_colab',
            'centrocustos.cod_centrocusto',
            'status_rcis.descricao_status',
            'rcis.fornecedor_escolhido',
            'fornecedor_detalhes.valortotalcompra',
            'fornecedor_detalhes.prazo_entrega')
        ->where('rci_id', '=', $rciid)
        ->where('rcis.fornecedor_escolhido','=', 'B')            
        ->wherecolumn('rcis.fornecedor_escolhido','=', 'fornecedor_detalhes.letra')
        ->get(); 
    }

    elseif($teste=='[{"fornecedor_escolhido":"C"}]'){
        $rci = DB::table('rcis')
        ->join('colaboradors', 'rcis.fk_colaborador', '=', 'colaboradors.colaborador_id')
        ->join('centrocustos', 'rcis.fk_centrocusto', '=', 'centrocustos.centrocusto_id')
        ->join('status_rcis', 'rcis.fk_status_rci', '=', 'status_rcis.status_rci_id')
        ->join('fornecedor_detalhes', 'fornecedor_detalhes.fk_rcid', '=', 'rcis.rci_id')

        ->select('rcis.observacoes',
            'rcis.data_rci',
            'colaboradors.nome_colab',
            'centrocustos.cod_centrocusto',
            'status_rcis.descricao_status',
            'rcis.fornecedor_escolhido',
            'fornecedor_detalhes.valortotalcompra',
            'fornecedor_detalhes.prazo_entrega')
        ->where('rci_id', '=', $rciid)
        ->where('rcis.fornecedor_escolhido','=', 'C')            
        ->wherecolumn('rcis.fornecedor_escolhido','=', 'fornecedor_detalhes.letra')
        ->get();
    }

    return view ('/escolherci', ['id'=>$id, 'rci'=>$rci]);    
}

and the view.:

<h3>Escolha uma chave estrangeira para selecionar uma RCI</h3>
<!--ID DROPDOWN-->
    <label  for="idrci">Chave estrangeira: </label>
    <select class="form-control"  type="text" name="idrci" id="idrci">
    @foreach ($id as $idr)
    {
     <option value="{{ $idr }}">{{ $idr }}</option>
    }
    @endforeach
    </select><br><br>
<input type="submit" value="Salvar"> </button>
</form>

@foreach($rci as $rc)

    Requisitante: {{$rc->nome_colab}}<br><br>
    Centro de custo: {{$rc->cod_centrocusto}}<br><br>
    Descrição: {{$rc->observacoes}}<br><br>
    Status RCI: {{$rc->descricao_status}}<br><br>        
    Valor total da compra: {{$rc->valortotalcompra}}<br><br>
    Prazo entrega: {{$rc->prazo_entrega}}<br><br>

@endforeach

in the HTML form is only for the controller to take the ID target=_self to show on the same page. I need to return this variable within ifs $rci to view

  • You are only returning the $rci variable and leaving the controller. You must take the Return $rci out of ifs for the controller to reach the last line of the Return

  • this was only one of the attempts I made, the problem is that I can not catch the variable inside the if to play in the view

  • at the end of each if type dd($rci) to see if he is entering any if

  • made, it returns the values I want in json form.

  • but do you use the same json format data? try changing the last line to Return view('/choose', ['id'=>$id, 'rci'=>json_decode($rci)])

  • doing that Voce spoke of in the same "Undefined variable: rci" and no, I want to pass the data to HTML that posted , because I will still do more things with the page

  • dd($rci) before Return view to see. And the $id variable it is finding in Blade?

  • @Ademilsonsantanadasilva made the dd and still same error Undefined variable: rci in the line where I gave the dd, the variable id he picks that is popular the combobox

  • You want to take the results of rci according to what you select in the first combobox, loading it dynamically?

  • that, user chooses the id and it will load the data in view

  • if I enter /chose? idrci=2 with the right id, it shows the page as it is to be, but I don’t know why if I enter only /chose not the right one

  • got it, now it’s clear the error. So, there’s no way to make it not update the page only with php. You have to use ajax in jquery if you want to do without updating the page

  • to avoid the error, before the foreach q vc gives in the $rci on the Lade, put an if(isset($rci)) and put the foreach inside

  • and then Voce can do that by selecting the item of the first combobox, Voce redirects again to that same page by passing the idrci as parameter in the url, the same Voce showed in case it works

  • That is @Ademilsonsantanadasilva worked with if(isset($rci) before foreach, I will update the question, thank you

Show 10 more comments

1 answer

0


Blade:

<h3>Escolha uma chave estrangeira para selecionar uma RCI</h3>
<!--ID DROPDOWN-->
    <label  for="idrci">Chave estrangeira: </label>
    <select class="form-control"  type="text" name="idrci" id="idrci">
    @foreach ($id as $idr)
    {
     <option value="{{ $idr }}">{{ $idr }}</option>
    }
    @endforeach
    </select><br><br>
<input type="submit" value="Salvar"> </button>
</form>
    @if(isset($rci))
    @foreach($rci as $rc)

    <b>Requisitante:</b>   {{$rc->nome_colab}}<br><br>
    <b>Centro de custo:</b>  {{$rc->cod_centrocusto}}<br><br>
    <b>Descrição:</b>  {{$rc->observacoes}}<br><br>
    <b>Status RCI:</b>  {{$rc->descricao_status}}<br><br>        
    <b>Valor total da compra:</b> {{$rc->valortotalcompra}}<br><br>
    <b>Prazo entrega:</b>  {{$rc->prazo_entrega}}<br><br>

    @endforeach
    @endif

controller:

    $id = DB::table('rcis')->pluck('rci_id');
    $rciid = $request->input('idrci');

    $teste = DB::table('rcis')->select('fornecedor_escolhido')->where('rci_id', '=', $rciid)->get(); 

    if($teste=='[{"fornecedor_escolhido":"A"}]'){
        $rci = DB::table('rcis')
        ->join('colaboradors', 'rcis.fk_colaborador', '=', 'colaboradors.colaborador_id')
        ->join('centrocustos', 'rcis.fk_centrocusto', '=', 'centrocustos.centrocusto_id')
        ->join('status_rcis', 'rcis.fk_status_rci', '=', 'status_rcis.status_rci_id')
        ->join('fornecedor_detalhes', 'fornecedor_detalhes.fk_rcid', '=', 'rcis.rci_id')

        ->select('rcis.observacoes',
            'rcis.data_rci',
            'colaboradors.nome_colab',
            'centrocustos.cod_centrocusto',
            'status_rcis.descricao_status',
            'rcis.fornecedor_escolhido',
            'fornecedor_detalhes.valortotalcompra',
            'fornecedor_detalhes.prazo_entrega')
        ->where('rci_id', '=', $rciid)
        ->where('rcis.fornecedor_escolhido','=', 'A')            
        ->wherecolumn('rcis.fornecedor_escolhido','=', 'fornecedor_detalhes.letra')
        ->get();
        return view('/escolherci', ['id'=>$id, 'rci'=>$rci]);

    }

    elseif($teste=='[{"fornecedor_escolhido":"B"}]'){
        $rci = DB::table('rcis')
        ->join('colaboradors', 'rcis.fk_colaborador', '=', 'colaboradors.colaborador_id')
        ->join('centrocustos', 'rcis.fk_centrocusto', '=', 'centrocustos.centrocusto_id')
        ->join('status_rcis', 'rcis.fk_status_rci', '=', 'status_rcis.status_rci_id')
        ->join('fornecedor_detalhes', 'fornecedor_detalhes.fk_rcid', '=', 'rcis.rci_id')

        ->select('rcis.observacoes',
            'rcis.data_rci',
            'colaboradors.nome_colab',
            'centrocustos.cod_centrocusto',
            'status_rcis.descricao_status',
            'rcis.fornecedor_escolhido',
            'fornecedor_detalhes.valortotalcompra',
            'fornecedor_detalhes.prazo_entrega')
        ->where('rci_id', '=', $rciid)
        ->where('rcis.fornecedor_escolhido','=', 'B')            
        ->wherecolumn('rcis.fornecedor_escolhido','=', 'fornecedor_detalhes.letra')
        ->get();
        return view('/escolherci', ['id'=>$id, 'rci'=>$rci]);

    }

    elseif($teste=='[{"fornecedor_escolhido":"C"}]'){
        $rci = DB::table('rcis')
        ->join('colaboradors', 'rcis.fk_colaborador', '=', 'colaboradors.colaborador_id')
        ->join('centrocustos', 'rcis.fk_centrocusto', '=', 'centrocustos.centrocusto_id')
        ->join('status_rcis', 'rcis.fk_status_rci', '=', 'status_rcis.status_rci_id')
        ->join('fornecedor_detalhes', 'fornecedor_detalhes.fk_rcid', '=', 'rcis.rci_id')

        ->select('rcis.observacoes',
            'rcis.data_rci',
            'colaboradors.nome_colab',
            'centrocustos.cod_centrocusto',
            'status_rcis.descricao_status',
            'rcis.fornecedor_escolhido',
            'fornecedor_detalhes.valortotalcompra',
            'fornecedor_detalhes.prazo_entrega')
        ->where('rci_id', '=', $rciid)
        ->where('rcis.fornecedor_escolhido','=', 'C')            
        ->wherecolumn('rcis.fornecedor_escolhido','=', 'fornecedor_detalhes.letra')
        ->get();
        return view('/escolherci', ['id'=>$id, 'rci'=>$rci]);
    }

    return view('/escolherci', ['id'=>$id]);

Browser other questions tagged

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