Laravel 5在控制器中验证

时间:2017-03-07 13:55:32

标签: php laravel laravel-5.3

我的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个字,如果有空格,则将其修剪成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!');
}

1 个答案:

答案 0 :(得分:2)

首先编写新的数据请求

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 = Validator::make(
            $image, [
                'img' => 'file|image',
            ]
        );

More information关于关于可选字段的说明