【问题标题】:Validation request with Laravel 5Laravel 5 的验证请求
【发布时间】:2015-12-24 21:20:16
【问题描述】:

我正在尝试以正确的方式使用 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;
    }

?

【问题讨论】:

标签: validation laravel laravel-5


【解决方案1】:

Request 具有基本功能:rules()authorize()

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());
}

【讨论】:

  • 但是如何在我的示例中实现它,我需要验证我的 ajax 请求中的字段...我需要验证 $inputs 数组..
  • 更新了我的答案。不确定它是否 100% 有效,但这应该是正确的方法。
  • 我不需要创建我需要更新的评论....我还需要检查针对 ajax 文件的规则Input::get(...) ....
  • 然后使用Comment::find($id)->update($request->all());。通过使用 CommandRequest 类,它将被检查。
  • 此视频有助于了解请求的使用情况laracasts.com/series/whats-new-in-laravel-5/episodes/3
【解决方案2】:

我猜您使用的是 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') {
...

然后验证部分看起来很好

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 2015-08-07
    • 2016-09-20
    • 2016-05-20
    • 2015-09-08
    • 2015-10-05
    • 2017-11-21
    • 2020-01-13
    • 2015-11-25
    相关资源
    最近更新 更多