2017-03-23 7 views
0

내가 그래서 난에 의해 php artisan make:request TaskRequest을 만들 시작했다 모델의 유효성을 검사 양식 요청을 사용하려는 요청 나는 TaskRequest 클래스`Laravel 5.4 검증

public function rules() 
    { 
     return [ 
      'name' => 'required|min:5', 
     ]; 
    } 
    public function messages() 
    { 
     return [ 
      'name.required' => 'A title is required', 
     ]; 
    } 
` 

에 내 논리에 추가 한 후

Route::post('/tasks',function (\App\Http\Requests\TaskRequest $request){ 

    $task = new \App\Task(); 
    $task->name = $request->input("name"); 
    $task->save(); 

    return response()->json(['task was created',$task], http_response_code()); 
}); 

그래서 작업을 추가하려고하면 오류가 발생합니다. HttpException, This action is unauthorized.,AuthorizationException ...

유효성 검사없이 저에게 적합했습니다. 어떻게이 문제를 해결할 수 있습니까?

답변

1

모든 (자체 생성 된) 요청에는 사용자가 요청을 보낼 수 있는지 여부를 결정하는 authorize 기능이 있습니다. 이것은 관리자 특권 또는 유사점을 확인하는 데 유용 할 수 있습니다.

경우에 따라 true을 돌려 줄 수 있습니다. 자세한 내용은 다음과 같을 것이다 당신 TaskRequestcorresponding docs

귀하의 권한 부여 기능에서 찾을 수 있습니다

는 포함 "양식 요청"에 대한 사용자 정의 요청 클래스에서
/** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return true; 
    } 
+0

감사합니다. @manniL 어떻게하면 (작업)을 만들지 않았을 때부터 메시지를받을 수 있습니까? 이제 laravel의 색인 페이지에 대한 페이지 HTML이 표시됩니까? – Akram

+0

당신은 오신 것을 환영합니다! 유효성 검사 오류를 표시하려면 [docs] (https://laravel.com/docs/5.4/validation#quick-displaying-the-validation-errors)를 참조하십시오. – manniL

+0

Ok @manniL하지만 유효성 검사시 json에서 오류가 발생합니다. 오류가있는 경우이를 수행 할 수있는 방법이 있습니다. – Akram

0

검증 로직은 return:true;을 통과하는 대신 return:false; 그리고 그것은 매력처럼 작동 할 것입니다. 그렇게 우리가 FormRequest 클래스에서 권한 부여가 필요하지 않습니다 ...이 양식을 포함하는 페이지에 대한 인증을하기 위해 미들웨어를 사용할 수있는 코드는 다음과 같이 뭔가 모양을

,

namespace App\Http\Requests; 

    use Illuminate\Foundation\Http\FormRequest; 

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

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

. 따라서 사실로 돌아 가면 모든 경우에 대해 권한이 부여됩니다.

지금 모든 사람에게 분명하다고 생각합니다.