当传递控制器以查看未定义变量时,我得到未定义变量错误:用户(查看:C:\ xampp \ htdocs \ site \ resources \ views \ edit.blade.php)

时间:2020-08-14 10:54:58

标签: php laravel variables undefined

//这是我的控制器

public function edituser(Request $request,$id){

    $user=User::find($id);
    $user->name=$request->name;
    $user->email=$request->email;
    $user->role_id=$request->role_id;

    $users=User::all();

    return view('edit',compact('users'));
}

//这是刀片

<form action="{{route('edituser',['id'=>$user->id])}}" method="post">
@csrf
    <div class="form-row align-items-center">
        <div class="col-auto">
            <label class="sr-only" for="inlineFormInput">Adı</label>
            <input type="text" value="" class="form-control mb-2" id="inlineFormInput" placeholder="Adı">
        </div>

        <div class="col-auto">
            <label class="sr-only" for="inlineFormInputGroup">Emaili</label>
                <div class="input-group mb-2">
                    <input type="text" class="form-control" id="inlineFormInputGroup" placeholder="Emaili">
                </div>
        </div>


        <select class="mdb-select md-form">
            @foreach ($users as $user)
            <option>--Səlahiyyət seç---</option>
            <option value="1">{{$user->name}}</option>
            @endforeach
        </select>

//这是路线

Route::get('edit/{id}','AdminController@edit')->name('edit');
Route::post('edituser/{id}','AdminController@edituser')->name('edituser');

更新:这是我的全部控制者

    <?php

namespace App\Http\Controllers;
use App\User;

use Illuminate\Http\Request;


class AdminController extends Controller
{


    public function delete($id){

        $delete=User::where('id',$id)->delete();

        if($delete){

                return redirect()-> back();
        }
    }


public function edit(){


        $users=User::all();

    return view('edit',compact('users'));
}

public function edituser(Request $request,$id){

        $user=User::find($id);
       $user->name=$request->name;
       $user->email=$request->email;
       $user->role_id=$request->role_id;

}

2 个答案:

答案 0 :(得分:1)

似乎您在控制器上使用了错误的方法。 POST路由使用edituser方法,因此您应该在edit方法上使用用户代码/紧凑代码,因为GET路由正在使用该代码。

edituser中移动以下代码并将其放入edit

$users = User::all();

return view('edit',compact('users'));

您的edituser方法应该类似于:

public function edituser(Request $request,$id){

    $user = User::find($id);
    $user->name=$request->name;
    $user->email=$request->email;
    $user->role_id=$request->role_id;

    return view('edit',compact('user'));
}

请更新您的原始答案以显示这两种方法。

答案 1 :(得分:0)

public function edit($id) {
    $user = User::find($id);
    $users = User::all();
    return view('edit')->with(compact('user', 'users'));
}


public function edituser(Request $request, $id) {
    $user = User::find($id);
    $user->name = $request->name;
    $user->email = $request->email;
    $user->role_id = $request->role_id;

    $users = User::all();
    return view('edit')->with(compact('user', 'users'));
}

充分希望它将对您有帮助。