返回 Laravel 功能在服务器上不起作用

我的 Laravel 项目有问题,当验证器 false 返回函数在 localhost 上运行良好,但在服务器上它返回到 root url 时,有人可以帮我弄清楚吗?我的控制器是这样的:


public function update(Request $request, $id)

{

    if ($request->isMethod('get'))

        return view('employees.form_edit', ['user' => User::find($id)]);

    else {

        $rules = [

            'name' => 'required',

            'full_name' => 'required',

            'id_number' => 'required',

            'date_of_birth' => 'required',

            'avatar' => 'mimes:jpeg,jpg,png,gif|max:2048'

        ];

        $validator = Validator::make($request->all(), $rules);

        if ($validator->fails()) {

            return redirect()->back()

                ->withErrors($validator)

              ;

        }


        $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');

        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{

            echo "no file";

        }

        $user->save();

        return redirect('listEmployees');


    }

}

我的路线:


Route::group(['prefix' => 'listEmployees'], function () {

  Route::match(['get', 'post'], 'update/{id}', 'EmployeesController@update');

});


心有法竹
浏览 167回答 3
3回答

LEATH

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

呼唤远方

我通过将重定向功能更改为&nbsp;return redirect()->action(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'EmployeesController@update', ['id' => $id]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )谢谢大家

慕码人2483693

在进一步解决这个问题之前,您需要稍微清理一下代码。首先,您不需要检查request->method您是否已经创建了路由“Route::update”(laravel 会处理它)。第二:使用 laravel 表单请求并使你的控制器更清晰和可读( php artisan make:request ModelNameRequest) 第三:如果你想重定向到back(),你不需要手动重定向用户,laravel 再次照顾它,back()如果验证器失败,它会重定向和 $errors 数组。任何方式这是可能工作的代码:public function update(Request $request, $id)&nbsp; &nbsp; {&nbsp; &nbsp; $rules = [&nbsp; &nbsp; &nbsp; &nbsp; 'name' => 'required',&nbsp; &nbsp; &nbsp; &nbsp; 'full_name' => 'required',&nbsp; &nbsp; &nbsp; &nbsp; 'id_number' => 'required',&nbsp; &nbsp; &nbsp; &nbsp; 'date_of_birth' => 'required',&nbsp; &nbsp; &nbsp; &nbsp; 'avatar' => 'mimes:jpeg,jpg,png,gif|max:2048'&nbsp; &nbsp; ];&nbsp; &nbsp; // if the validation failes, laravel redirects back with a collection of $errors&nbsp; &nbsp; $this->validate($request->all(), $rules);&nbsp; &nbsp; // you probably want to use User::create($request->only('input1', 'input2', ...);&nbsp; &nbsp; $user = User::find($id);&nbsp; &nbsp; $user->name = $request->name;&nbsp; &nbsp; $user->position = $request->position;&nbsp; &nbsp; $user->full_name = $request->full_name;&nbsp; &nbsp; $user->id_number = $request->id_number;&nbsp; &nbsp; $user->date_of_birth = $request->date_of_birth;&nbsp; &nbsp; $user->status = $request->status;&nbsp; &nbsp; $img_current = 'upload/avatar/' .$request->input('img_current');&nbsp; &nbsp; // use a good package for storing your files like Mediable to make it easy.&nbsp; &nbsp; if (!empty($request->file('avatar'))) {&nbsp; &nbsp; &nbsp; &nbsp; $file_name = $request->file('avatar')->getClientOriginalName();&nbsp; &nbsp; &nbsp; &nbsp; $user->image = $file_name;&nbsp; &nbsp; &nbsp; &nbsp; $request->file('avatar')->move('upload/avatar/',$file_name);&nbsp; &nbsp; &nbsp; &nbsp; if (File::exists($img_current)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; File::delete($img_current);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }else{&nbsp; &nbsp; &nbsp; &nbsp; //TODO: you should not echo some thing here, you should use session()->flash()&nbsp; &nbsp; &nbsp; &nbsp; session()->flash('message', 'You did not select any file.');&nbsp; &nbsp; }&nbsp; &nbsp; $user->save();&nbsp; &nbsp; return redirect('listEmployees');}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript