ErrorException - 未定义变量 $empleado (Laravel 8 + PHP 8 + SQLite)

问题描述 投票:0回答:2

请帮忙!谢谢...

我现在正在学习 Laravel,所以做这个 CRUD 练习,视图 (user.blade.php) 向我显示一条错误消息:“ErrorException - 未定义变量 $empleado” 我已经到处尖叫这个错误,我已经检查了很多次控制器和 web.php,但我仍然不知道错误来自哪里......我将把代码留在视图中,控制器和 web.php。

-> 控制器

<?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\Models\Empleado; 


    class EmpleadosController extends Controller
    {
        /** 
     *  index para mostrar empleado
     *  Store para guardar empleado
     *  update para actualizar un empleado  
     *  destroy para eliminar un empleado 
     *  edit para mostrar el formulario de edicion 
     */


    public function store(Request $request){
        $request -> validate([
            'nombre' => 'required|min:3',
            'apellido' => 'required|min:3',
            'cargo' => 'required',
            'ciudad' => 'required',
            'pais' => 'required',
            'genero' => 'required',
        ]);

        $empleado = new Empleado;
        $empleado ->nombre = $request->nombre;
        $empleado ->apellido = $request->apellido;
        $empleado ->cargo = $request->cargo;
        $empleado ->ciudad = $request->ciudad;
        $empleado ->pais = $request->pais;
        $empleado ->genero = $request->genero;

        $empleado ->save();

        return redirect()->route('create')->with('success','Se ha creado un nuevo empleado    correctamente');
     }

     public function index(){
        $empleados = Empleado::all();
        return view('form.list', ['empleados' => $empleados]);
     }


     public function show($id){
        $empleado = Empleado::find($id);
        return view('form.user', ['empleado' => $empleado]);
     }
     

}

-> 查看 (user.blade.php)

    @extends('app')
    @section('content')


    <div class ="container w-25 border p-3 mt-4">

         <form  method="POST" action="{{ route('modify', ['id' => $empleado->id]) }}">
            
         @method('PATCH')
            @csrf

            @if (session('success'))
                <h6 class="alert alert-success">{{ session('success') }}</h6>     
            @endif
 
                
             <div class="mb-3">
                 <h3> Modificar perfil </h3>
             </div>
 
             <div class="form-floating mb-3">
                 <input type="text" name="nombre" class="form-control" value="{{ $empleado->nombre }}">
        
             </div>
 
 
             <div class="form-floating mb-3">
                 <input type="text" name="apellido" class="form-control" placeholder="apellido">
                 <label for="apellido">Apellido</label>
             </div>
 
             
             <div class="dropdown mb-3">
 
                 <div class="form-floating">
 
                     <select type="text" name="cargo" class="form-select" aria-label="Floating label select example">
                             <option selected>Profesional</option>
                             <option value="supervisor">Supervisor</option>
                             <option value="gerente">Gerente</option>
                             <option value="presidente">Presidente</option>
                     </select>
 
                     <label for="cargo">Seleccionar Cargo</label>
                 </div>
 
             </div>
 
 
             <div class="dropdown mb-3">
 
                 <div class="form-floating">
 
                     <select type="text" name="pais" class="form-select" aria-label="Floating label select example">
                             <option selected value="colombia">Colombia</option>
                             <option value="mexico">Mexico</option>
                             <option value="argentina">Argentina</option>
                             <option value="chile">Chile</option>
                     </select>
 
                     <label for="pais">Seleccionar País</label>
                 </div>
 
             </div>
 
 
             <div class="dropdown mb-3">
 
                 <div class="form-floating">
 
                     <select type="text" name="ciudad" class="form-select" aria-label="Floating label select example">
                             <option selected value="bogota">Bogotá</option>
                             <option value="df">DF Ciudad de Mexico</option>
                             <option value="buenos aires">Buenos Aires</option>
                             <option value="santiago chile">Santiago de Chile</option>
                     </select>
 
                     <label for="ciudad">Seleccionar Ciudad</label>
                 </div>
 
             </div>
 
 
             <div class="dropdown mb-3">
 
                 <div class="form-floating">
 
                     <select type="text" name="genero" class="form-select" aria-label="Floating label select example">
                             <option selected value="na">n/a</option>
                             <option value="H">Hombre</option>
                             <option value="M">Mujer</option>
                     </select>
 
                     <label for="genero">Seleccionar Genero</label>
                 </div>
 
             </div>
             
             <button type="submit" class="btn btn-primary">Modificar</button>
             <button type="button" class="btn btn-secondary">Regresar</button>

 
         </form>
     </div>



     @endsection 

-> web.php

<?php

     use Illuminate\Support\Facades\Route;
     use App\Http\Controllers\EmpleadosController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/

   Route::get('/', function () {
    return view('welcome');
});

   Route::get('/create', function () {
    return view('form.index');
});

   Route::get('/login', function () {
    return view('login.login');
});

   Route::get('/list', function () {
    return view('form.list');
});

Route::get('/modify', function () {
    return view('form.user');
});


Route::get('/modify/{id}', [EmpleadosController::class, 'show'])->name('modify'); 

Route::patch('/modify/{id}', [EmpleadosController::class, 'update'])->name('user-update');  

Route::get('/list', [EmpleadosController::class, 'index'])->name('list');  

Route::post('/create', [EmpleadosController::class, 'store'])->name('create');  

Route::delete('/list', [EmpleadosController::class, 'store'])->name('destroy');  

我已经尝试过

@foreach
...

php laravel view laravel-8 laravel-blade
2个回答
0
投票

您在访问

/modify
/modify/someID
时是否遇到错误?如果您在访问
/modify
时遇到错误,那么这是预期的,因为您定义了返回相同刀片视图 (
form.user
) 的路线,但不传递
empleado
数据。

Route::get('/modify', function () {
    return view('form.user');
});

0
投票

-> 我认为您需要在控制器中使用以下查询

public function show($id)
{
    $empleado = Empleado::find($id);

    return view('form.user', compact('empleado'));
}

-> 我认为这将帮助您解决此错误,

© www.soinside.com 2019 - 2024. All rights reserved.