2015-12-25 160 views
0

我只想使用laravel自定义请求处理程序验证API请求。为此,我创建了一个RegisterRequest,其中包含以下内容。Laravel的自定义请求验证器

<?php 

namespace App\Http\Requests\Api\Auth; 

use App\Http\Requests\Request; 

class RegisterRequest extends Request 
{ 
    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return false; 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      'email' => 'required' 
     ]; 
    } 
} 

而且,我希望它在AuthController使用为:

use App\Http\Requests\Api\Auth\RegisterRequest; 

    public function postRegister(RegisterRequest $request) 
    { 
     dd($request->all()); 
    } 

但是,既没有确认,也没有请求参数显示在生存。 所有的路由工作正常,但查询参数是空的。任何帮助将appriciated。

版本:Laravel:5.1

我想让laravel处理所有的请求参数,并说API请求是否是由成功还是有错误。

+0

你的请求甚至没有达到控制器的方法,所以你不能dd任何东西; D – naneri

回答

0

您的authorize方法应返回true。如果它为假,RegisterRequest将返回禁止,因为您未授权使用此类RegisterRequest类。如果你想在你的方式来回复该错误信息您可以重写响应方法RegisterRequest方法是这样 :

public function response(array $errors) 
{ 
    return \Response::json($errors); 
} 
所以,你 authorize方法改变从 RegisterRequest这样:

public function authorize() 
{ 
    return true; 
} 

编辑

+0

我已经改变它为false来强制错误响应到API结束。 – TNC

+0

如果authorize方法返回false,则会自动返回带有403状态码的HTTP响应,并且您的控制器方法将不会执行。更多信息请查看https://laravel.com/docs/5.1/validation#form-request-validation – sixFingersMan

+0

Laravel会自动检查请求是否为ajax并返回相应的响应权限?请求尝试不会返回任何响应。 – TNC