【问题标题】:Laravel validation errorLaravel 验证错误
【发布时间】:2018-09-05 11:31:08
【问题描述】:

为什么我的验证不起作用,但如果我推荐验证,代码将成功运行。 [这是我的控制器][1]

函数更改密码(请求$req){

    $this->validate(
        $req,
        [
            'currpassword' => 'required | min:5',
            'newpassword' => 'required | min:5',
            'confirmnewpassword' => 'required| same:newpassword |min:5' 
        ]);

    // Validasinya gajalan

    $id = $req->input('id');
    $data = User::find($id);

    $currpassword = $req->input('currpassword');
    $newpassword = $req->input('newpassword');
    $confirmnewpassword = $req->input('confirmnewpassword');

    $currpass = $req->input('currpassword'); // password yang lama

    $currpasshash = Hash::make('currpassword');

    if (Hash::check($currpass , $data->password)) { 
        $data->password = Hash::make($newpassword);
        $data->save();
        return redirect('profile'); 

    }
    else{
        return redirect('changepassword');
    }


}

【问题讨论】:

    标签: php html laravel validation routes


    【解决方案1】:

    您将错误的参数传递给您的验证方法,试试这个,

    $this->validate(
        $req->all(), [
            'currpassword' => 'required | min:5',
            'newpassword' => 'required | min:5',
            'confirmnewpassword' => 'required| same:newpassword |min:5' 
        ]);
    

    【讨论】:

    • 它不起作用,:( 结果是一条错误消息“类型错误:传递给 App\Http\Controllers\Controller::validate() 的参数 1 必须是 Illuminate\Http\Request 的实例, 给定数组,”
    【解决方案2】:

    newpassword 和 pip | 符号之间有一个空格,laravel 将字段名称标识为“newpassword”而不是“newpassword”,这总是会导致错误。

    去掉空格试试:

    'confirmnewpassword' => 'required | same:newpassword| min:5' 
    

    【讨论】:

    • 它没有影响任何东西:(。当我点击更改密码按钮时,结果仍然返回更改密码的页面
    • @KennyNataniel 您能否确认是否由于 validate 功能或以下行导致更改密码页面的重定向发生 return redirect('changepassword');
    【解决方案3】:

    你可以试试这个代码。

    function changepassword(Request $req) {
        $validatedData = $request->validate([
            'currpassword' => 'required|min:5',
            'newpassword' => 'required|min:5',
            'confirmnewpassword' => 'required|same:newpassword|min:5' 
        ]);
    }
    

    显示验证错误

    <h1>Create Post</h1>
    
    @if ($errors->any())
       <div class="alert alert-danger">
          <ul>
               @foreach ($errors->all() as $error)
                   <li>{{ $error }}</li>
               @endforeach
          </ul>
       </div>
    @endif
    

    欲了解更多信息,请访问Validation in Laravel

    希望对你有帮助……

    【讨论】:

    • 在哪一行或哪个方法?
    • 我的意思是方法验证不存在,这是错误消息“Macroable.php 第 74 行中的 BadMethodCallException:方法验证不存在。”
    • 你导入验证器了吗?使用验证器
    • 我正在使用这个 'use Illuminate\Support\Facades\Validator;'对吗?
    • 是的,但是在脚本的顶部使用它而不是长命名空间的外观。使用验证器;
    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 2016-03-28
    • 2019-12-07
    • 2018-12-05
    • 2017-07-16
    • 2016-05-10
    相关资源
    最近更新 更多