Laravel 5 在控制器中验证

Laravel 5 Validation in controller

我的控制器中有 2 个方法,我需要验证它,但我不知道如何验证。

应该允许所有图像扩展的第一种方法:

public function testing(Request $request) {
    if($request->hasFile('img')) {
        $image = Input::file('img');
        $filename = time() . '.' . $image->getClientOriginalExtension();
        $path = public_path('images/' . $filename);
        Image::make($image->getRealPath())->resize(200, 200)->save($path);
        $file = $request->file('img');
        return ['url' => url('images/' . $filename)];
    }
}

第二种方法,应该只允许 1 个单词,如果有 space,trim 将它变成 1 个单词:

public function postDB(Request $request) {
    $newName = $request->input('newName');
    $websites = new Website();
    $websites->name = $newName;
    $websites->save();
    return redirect('template')->with('status', 'Website has been saved successfully!');
}

首先为您的数据写新请求

php artisan make:request ImageRequest

比写在ImageRequest:

public function authorize()
{
    return true;
}

public function rules()
{
    return [
       'img' => 'file|image',
    ]    
}

如果您想自定义错误消息:

public function messages()
    {
        return [
            'img.image' => 'Some custom message ...',

        ];
    }

最后向您的方法注入请求(不要忘记 使用 App\Http\Requests):

public function testing(Requests\ImageRequest $request) {
    //for retrieving validation errors use:
      $imgErrors = $errors->first('img'); 
}

More information 关于 表单请求验证

或者你可以使用 Validator facade(别忘了 use Validator):

$validator = Validator::make(
            $image, [
                'img' => 'file|image',
            ]
        );

More information关于关于可选字段的注释