3 回答

TA贡献1797条经验 获得超6个赞
试试我有的这段代码
控制器
public function update(Request $request, $id)
{
if ($request->isMethod('get'))
return view('employees.form_edit', ['user' => User::find($id)]);
else {
$_data = $request->validate([
'name' => ['required'].
'full_name' => ['required'],
'id_number' => ['required'],
'date_of_birth' => ['required'],
'avatar' => ['mimes:jpeg,jpg,png,gif', 'max:2048'],
'position' => ['nullable'],
'status' => ['nullable']
])
$img_current = 'upload/avatar/' .$request->input('img_current');
if (!empty($request->file('avatar'))) {
$file_name = $request->file('avatar')->getClientOriginalName();
$data['image'] = $file_name;
$request->file('avatar')->move('upload/avatar/',$file_name);
if (File::exists($img_current)) {
File::delete($img_current);
}
}else{
echo "no file";
}
$user = User::find($id);
$user->update($_data);
return redirect('listEmployees');
}
}
看法
@if ($errors->any())
<div class="alert alert-warning">
@foreach ($errors->all() as $error)
{{$error}} <br>
@endforeach
</div>
@endif

TA贡献1831条经验 获得超10个赞
我通过将重定向功能更改为来解决这个问题
return redirect()->action( 'EmployeesController@update', ['id' => $id] )
谢谢大家

TA贡献1862条经验 获得超7个赞
在进一步解决这个问题之前,您需要稍微清理一下代码。首先,您不需要检查request->method您是否已经制作了路线“Route::update”(laravel 会处理它)。第二:使用 laravel form-request 并使你的控制器更干净和可读(php artisan make:request ModelNameRequest)第三:如果你想重定向到back(),你不需要手动重定向用户,laravel 再次处理它,back()如果验证器失败,它将重定向和 $errors 数组。这是可能工作的代码的任何方式:
public function update(Request $request, $id)
{
$rules = [
'name' => 'required',
'full_name' => 'required',
'id_number' => 'required',
'date_of_birth' => 'required',
'avatar' => 'mimes:jpeg,jpg,png,gif|max:2048'
];
// if the validation failes, laravel redirects back with a collection of $errors
$this->validate($request->all(), $rules);
// you probably want to use User::create($request->only('input1', 'input2', ...);
$user = User::find($id);
$user->name = $request->name;
$user->position = $request->position;
$user->full_name = $request->full_name;
$user->id_number = $request->id_number;
$user->date_of_birth = $request->date_of_birth;
$user->status = $request->status;
$img_current = 'upload/avatar/' .$request->input('img_current');
// use a good package for storing your files like Mediable to make it easy.
if (!empty($request->file('avatar'))) {
$file_name = $request->file('avatar')->getClientOriginalName();
$user->image = $file_name;
$request->file('avatar')->move('upload/avatar/',$file_name);
if (File::exists($img_current)) {
File::delete($img_current);
}
}else{
//TODO: you should not echo some thing here, you should use session()->flash()
session()->flash('message', 'You did not select any file.');
}
$user->save();
return redirect('listEmployees');
}
- 3 回答
- 0 关注
- 214 浏览
添加回答
举报