Undefined Variable Error Laravel 5.8

publicado por: Anonymous

El error es: Undefined variable: prestadores (View: E:CursoLaravelsisMSPresourcesviewsPMedicamentoscreate.blade.php)

Sucede al querer ingresar a la vista de create.blade para realizar el alta de un usuario. El codigo de aqui abajo es para que muestre en el formulario los prestadores de salud en un desplegable, los cuales estan cargados en su correspondiente tabla de la base de datos.

En el controller tengo lo siguiente:

<?php

namespace SGPHttpControllers;

use IlluminateHttpRequest;

use sisMSPHttpRequests;

use IlluminateSupportFacadesRedirect;
use sisMSPHttpRequestsPMedicamentosFormRequest;
use AppPMedicamentos;
use DB;

class PMedicamentosController extends Controller
{

    public function __construct()
    {

    }

public function create()
    {
        $departamentos=DB::table('departamentos')->get();
        return view("PMedicamentos.create",["departamentos"=>$departamentos]);
        $medicamentosp=DB::table('medicamentos')->where('condicion','=','1')->get();
        return view("PMedicamentos.create",["medicamentos"=>$medicamentosp]);
        $prestadores=DB::table('prestador/seguro')->get();
        return view("PMedicamentos.create",["prestadores"=>$prestadores]);
        $laboratorios=DB::table('laboratorios')->get();
        return view("PMedicamentos.create",["laboratorios"=>$laboratorios]);
        $solicitud=DB::table('tipo de solicitud')->get();
        return view("PMedicamentos.create",["solicitud"=>$solicitud]);
    }

En el create.blade la parte que hace referencia a lo de arriba es lo siguiente:

@extends ('layouts.admin')
@section ('contenido')
    <div class="row">
        <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
            <h3>Nuevo Paciente</h3>
            @if (count($errors)>0)
            <div class="alert alert-danger">
                <ul>
                @foreach ($errors->all() as $error)
                    <li>{{$error}}</li>
                @endforeach
                </ul>
            </div>
            @endif
        </div>
    </div>
            {!!Form::open(array('url'=>'PMedicamentos','method'=>'POST','autocomplete'=>'off','files'=>'true'))!!}
            {{Form::token()}}

<div class="col-lg-6 col-sm-6 col-md-6 col-xs-12">
            <div class="form-group">
                <label>Prestador de Salud</label>
                <select name="Prestador_Seguro" class="form-control">
                    @foreach ($prestadores as $pre)
                       <option value="{{$pre->Nombre}}">{{$pre->Nombre}}</option>
                    @endforeach
                </select>
            </div>
        </div>

Agradezco sus respuestas.

Saludos.

solución

En la función de tu controlador tienes muchos returns. Entonces el código se ejecuta hasta encontrar un return y sale de esa función, retornado la vista con una sola variable.

Prueba retornando solo una vez la vista junto con todas las variables:

public function create()
{
    $departamentos = DB::table('departamentos')->get();

    $medicamentosp = DB::table('medicamentos')->where('condicion','=','1')->get();

    $prestadores = DB::table('prestador/seguro')->get();

    $laboratorios = DB::table('laboratorios')->get();

    $solicitud = DB::table('tipo de solicitud')->get();

    return view('PMedicamentos.create', [
        "departamentos" => $departamentos,
        "medicamentos" => $medicamentosp,
        "prestadores" => $prestadores,
        "laboratorios" => $laboratorios,
        "solicitud" => $solicitud
    ]);
}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *