简体   繁体   中英

Laravel make validation request not working

When i submit the form is nothing happens.
here is my step.

php artisan make:request PostRequest

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class PostRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'title'=>['required','max:255'],
            'article'=>['required'],
            'image'=>['image']
        ];
    }

    public function messages()
    {
        return [
            'title.required'=>['need title'],
            'article.required'=>['need article'],
        ];
        
    }
}
?>

App/Http/Controllers/PostController.php

<?php

namespace App\Http\Controllers;


use App\Post;
use App\User;
use Illuminate\Http\Request;
use App\Http\Requests\PostRequest;
use Illuminate\Support\Facades\Auth;

class PostController extends Controller
{
    public function store(PostRequest $request)
    {
        Post::create($request->all());
        return redirect()->route('post.index');
    }
}
?>

If i don't use PostRequest it work perfectly,like this.

app/Http/Controllers/PostController.php

public function store(Request $request)
    {
        $post=new Post;
        $post->user_id=Auth::user()->id;
        $post->title=$request->title;
        $post->article=$request->article;
        $post->image=$request->image;
        $post->save();
        return redirect()->route('post.index');
    }

And i missing something step? Thanks everyone.

Your rules() function has a return array.

public function rules()
{
    return [
        'title'=>['required','max:255'],
        'article'=>['required'],
        'image'=>['image']
    ];
}

Change it to

public function rules()
{
    return [
        'title'=>'required|max:255',
        'article'=>'required',
        'image'=>'image'
    ];
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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