猿问

我的表正在更新,但在 Laravel 6 更新之前未验证

我第一次使用 Laravel,版本 6.2。我的代码可以很好地更新数据库上的表,但它在更新之前不验证数据。这是我第一次需要自己验证我的表单(不是默认的 laravel auth),我认为我缺少一些基本的东西来让它工作。


我正在尝试使用当前密码 - 新密码 - 确认新密码来制作典型的更改密码表格。下面是我的路线,我的控制器和我的观点。


路线


Route::get('/cambiarclave', 'Auth\ChangePasswordController@showChangeForm');

Route::post('/cambiarclave', 'Auth\ChangePasswordController@changePassword')->name('cambiarclave');

更改密码控制器.php


class ChangePasswordController extends Controller

{

    public function __construct()

    {

        $this->middleware('auth');

    }


    public function showChangeForm()

    {

        return view('auth.cambiarclave');

    }


    protected function validator(array $data)

    {

        return Validator::make($data, [

            'clave-actual' => ['required', 'string', 'min:6'],

            'nueva-clave' => ['required', 'string', 'min:6', 'confirmed'],

        ]);

    }


    public function changePassword(request $request)

    {

        $data = $request->all();

        $user = User::find(auth()->user()->id);


        if (!Hash::check($data['clave-actual'], $user->password)) {

            return back()->with('error', 'You have entered wrong password');

        }


        $user_id = $user;

        $obj_user = User::find($user_id);

        $obj_user->password = \Hash::make($request->input('nueva-clave'));

        $obj_user->save();


        auth()->logout();


        return redirect('/ingreso');

    }

}


偶然的你
浏览 87回答 1
1回答

蛊毒传说

你错过了这里执行你的validator方法。您应该添加如下代码:$validator = $this->validator($data);if ($validator->fails()) {    return back()        ->withErrors($validator)        ->withInput();}后$user = User::find(auth()->user()->id);在你的控制器中运行验证。
随时随地看视频慕课网APP
我要回答