Laravel 5的验证请求

时间:2015-09-27 15:08:26

标签: validation laravel laravel-5

我正试图以正确的方式对Laravel 5进行验证:

以下是我在模型中的工作代码:

public function apiAddNewComment() {
        if (Input::get("task") == 'addComment') {
            $user = Auth::id();
            $inputs = array(
                'comment' => Input::get('comment'),
                'projectID' => Input::get('projectID'),
                'order' => Input::get("order"),
                'level' => Input::get("level"),
            );
            $rules = array(
                'comment' => 'required|between:15,600',
                'projectID' => "required|exists:project_group,project_id,user_id,$user|numeric",
                'order' => "required|numeric",
                'level' => "required|numeric"
            );

            $validator = Validator::make($inputs, $rules);
            if ($validator->fails()) {
                return json_encode(array('err' => true, 'errors' => $validator->messages()->all()));
            } else {
                return $this->createNewComment();
            }
        }
    }

这是我的控制器:

public function update($id, Comment $update)
    {
                return $update->apiUpdateComment();

    }

如何使用request进行验证?

有人可以解释一下这个方法在请求中是如何工作的:

public function authorize()
    {
        return false;
    }

2 个答案:

答案 0 :(得分:3)

Request必须具备以下基本功能:rules()authorize()

规则返回一个用于验证的数组。

授权方法可以例如检查是否允许用户执行此请求。

public function authorize() {
    return Auth::check();
}

因此,每次在控制器中使用请求时,都不必检查它。

如果您不需要支票,只需返回true

<强>更新 使用artisan生成请求文件

php artisan make:request CommandRequest

然后像这样编辑生成文件:

class CommandRequest extends FormRequest
{
    public function rules()
    {
        return [
            'comment' => 'required|between:15,600',
            'projectID' => "required|exists:project_group,project_id,user_id,$user|numeric",
            'order' => "required|numeric",
            'level' => "required|numeric"
        ];
    }

    public function authorize()
    {
        return true;
    }
}

同时更新控制器方法:

public function update($id, Comment $update, CommandRequest $request)
{
    // create your comment here like:
    return Comment::create($request->all());
}

答案 1 :(得分:0)

我猜你正在使用Laravel 4代码,你需要将它转换为L5,其中Input::get('var')变成$request->input('var')例如:

public function apiAddNewComment(Illuminate\Http\Request $request) { //Remember to add the Request as a parameter of the method
        if ($request->input("task") == 'addComment') {
...

然后验证部分看起来很好