我正在制作个人资料编辑页面,我在发布后的操作时遇到了问题。
路由文件是
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)
答案 0 :(得分:0)
您没有将任何变量传递给update()
方法中的视图,而是返回相同的视图(期望这些变量):
public function update(Request $request)
{
// ...
return view('profile.edit');
}
你可以简单地重定向回来:
public function update(Request $request)
{
// ...
return back();
}