为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

心有法竹 2021-10-14 17:06:38
我的 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');});
查看完整描述

3 回答

?
LEATH

TA贡献1936条经验 获得超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


查看完整回答
反对 回复 2021-10-14
?
呼唤远方

TA贡献1856条经验 获得超11个赞

我通过将重定向功能更改为


 return redirect()->action(

                'EmployeesController@update', ['id' => $id]

            )

谢谢大家


查看完整回答
反对 回复 2021-10-14
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

在进一步解决这个问题之前,您需要稍微清理一下代码。首先,您不需要检查request->method您是否已经创建了路由“Route::update”(laravel 会处理它)。第二:使用 laravel 表单请求并使你的控制器更清晰和可读( 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');


}


查看完整回答
反对 回复 2021-10-14
  • 3 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信