validate()函数在PostsController中不起作用

时间:2019-03-26 17:09:22

标签: php laravel laravel-5

从create view(PostsController)提交数据后,请求将转到存储方法(PostsController),但是没有数据在验证也不抛出错误。

在删除validate()之后,它可以工作并且输出为:123

class PostsController extends Controller
{
.
..
...
public function store(Request $request)
    {
       $this->validate($request, [
            'title' => 'required',
            'body' => 'required',
             ]);
       return 123;
    }

}


Output after the validate the data:

123

2 个答案:

答案 0 :(得分:2)

使用请求代替此:

$request->validate

Reference

答案 1 :(得分:1)

尝试从$request调用validate方法:

 $validatedData = $request->validate([
        'title' => 'required',
        'body' => 'required',
    ]);

docs:

中所述
  

验证方法由Illuminate \ Http \ Request提供

您还可以创建自己的请求,运行命令:

php artisan make:request PostStoreRequest:

在您的请求中:

public function rules()
{
    return [
        'title' => 'required',
        'body' => 'required',
    ];
}

您的控制器

public function store(PostStoreRequest $request)
    { 
       return 123;
    }
}

我建议您这样做,因为您将职责分开了

  

传入的表单请求在调用controller方法之前已得到验证,这意味着您无需使用任何验证逻辑来​​使您的控制器混乱: