简体   繁体   English

Laravel 验证不起作用

[英]laravel validation doesn't work

I am taking a laravel course an in order to follow the course I have to fix this issue, I checked everything, and apparently, everything is the same as the guy shows me.我正在参加 laravel 课程,为了遵循我必须解决此问题的课程,我检查了所有内容,显然,一切都与那个人向我展示的一样。 But the difference is that his validation works but not mine.但不同的是他的验证有效但我的无效。 It has to redirect me to the register_form when the validation is invalid but it doesn't.当验证无效时,它必须将我重定向到 register_form 但它没有。

Route路线

Route::get('/', function(){
    return view('welcome');
});

Route::get('/register', 'HomeController@register_form');

Route::post('/register', 'HomeController@register');

Controller控制器

namespace CoolBlog\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller {

    public function register_form(){
        return view('register');
    }

    public function register(Request $request) {
        $this->validate($request, [
            'username' => 'min:5|max:30',
            'email' => 'email',
            'pass' => 'min:5',
            'pass2' => 'same:pass'
        ]);
    }
}

Html Page网页

@extends('layout.default')

@section('title', 'Registration')

@section('content')
    <form method="post" action="/register" >
        {{csrf_field()}}
        Name: <input type="text" name="username"><br>
        E-mail: <input type="text" name="email"><br>
        Password: <input type="password" name="pass2"><br>
        Re-Password: <input type="password" name="pass2"><br>
        <input type="submit" value="Register">
    </form>

@endsection

Change this line:改变这一行:

Password: <input type="password" name="pass2"><br>
Re-Password: <input type="password" name="pass2"><br>

and replace it with this:并将其替换为:

Password: <input type="password" name="pass"><br>
Re-Password: <input type="password" name="pass2"><br>

and in your validation if you want any field must be required then add required in the validation并在您的验证中,如果您希望必须要求任何字段,则在验证中添加 required

$this->validate($request, [
            'username' => 'required|min:5|max:30',
            'email' => 'required|email',
            'pass' => 'required|min:5',
            'pass2' => 'required|same:pass'
        ]);

You are using same name for password and password confirmation.您使用相同的名称进行密码和密码确认。 Change password name to pass in your blade file and try using this validation instead更改密码名称以传入您的刀片文件并尝试使用此验证

$this->validate($request, [
        'username' => 'required|min:5|max:30',
        'email' => 'required|max:255|unique:users',
        'pass' => 'required|min:6|confirmed'
    ]);

I saw that you are not returning to any route after validating the form values.我看到您在验证表单值后没有返回任何路线。 So, can you please try this code format.所以,你能不能试试这个代码格式。 the validation method is also updated on upper level laravel versions验证方法也在上层 Laravel 版本上更新

function store(Request $request)
    {
        request()->validate([
            'title' => 'required',
            'body' => 'required',
        ]);
        Post::create($request->all());
        return redirect()->route('posts.index')->with('success', 'Post created successfully');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM