Laravel:后期操作后的未定义变量

时间:2018-04-23 15:21:22

标签: laravel laravel-5

我正在制作个人资料编辑页面,我在发布后的操作时遇到了问题。

路由文件是

Route::get('profile', 'ProfileController@profile')->name('profile');  
Route::post('profile', 'ProfileController@update');

个人资料页面控制器

public function profile()
    {
        $cities = City::all();
        $current_city = Auth::user()->city;
        $current_city_name = City::cityName($current_city);
        return view('profile.edit', compact('cities', 'current_city', 'current_city_name'));
    }

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'email' => 'required|string|email|max:255',
        ]);
    }

    public function update(Request $request)
    {
        $this->validator($request->all())->validate();
        $user = Auth::user();
        $user->email = $request->input('email');
        $user->city = $request->input('city');
        $user->save();
        $request->session()->flash('message', 'Information successfully changed');
        return view('profile.edit');
    }

最后是刀片模板代码

<select name="city" id="city" class="form-control">
      <option value="{{ $current_city }}">{{ $current_city_name }}</option>
      @foreach ($cities as $city)
          <option value="{{ $city->id }}">{{ $city->name }}</option>
      @endforeach
</select>

个人资料页面上的第一个入口是可以的。但是在提交表单后我有错误

Undefined variable: current_city (View: C:\OSPanel\domains\ang\laravel\resources\views\profile\edit.blade.php)

1 个答案:

答案 0 :(得分:0)

您没有将任何变量传递给update()方法中的视图,而是返回相同的视图(期望这些变量):

public function update(Request $request)
{
    // ...
    return view('profile.edit');
}

你可以简单地重定向回来:

public function update(Request $request)
{
    // ... 
    return back();
}