2017-03-23 5 views
0

I Formular Anfragen verwenden möchten Modell zu validieren, so begann ich von php artisan make:request TaskRequest erstellen und nachdem ich hinzufügen, in TaskRequest Klasse `Laravel 5.4 Validation-Formulars mit Hilfe Anfragen

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

und in Meine Logik

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

Also, wenn ich versuche, eine Aufgabe hinzuzufügen, bekomme ich Fehler HttpException, This action is unauthorized.,AuthorizationException ...

Es war Arbeit für mich ohne Validierung. Wie kann ich dieses Problem beheben?

Antwort

1

Jede (selbst erstellte) Anfrage hat eine authorize Funktion, die bestimmt, ob der Benutzer die Anfrage senden darf. Dies kann nützlich sein, um nach Administratorrechten oder Ähnlichem zu suchen.

In Ihrem Fall können Sie einfach true zurückgeben. Weitere Informationen finden Sie im corresponding docs

Ihre authorise Funktion in Ihrem TaskRequest wie folgt aussehen würde, zu finden:

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

danke @manniL wie bekomme ich eine nachricht von wenn nicht erstellt (task), jetzt bekomme ich seite HTML für index-seite von laravel? – Akram

+0

Gern geschehen! Für die Anzeige von Validierungsfehlern siehe [die Dokumente] (https://laravel.com/docs/5.4/validation#quick-displaying-the-validation-errors) – manniL

+0

Ok @manniL aber ich möchte Fehler in Json bei der Validierung erhalten hat Fehler, gibt es einen Weg, dies zu tun. – Akram

0

In Ihrer benutzerdefinierten Anfrage Klasse für „Formularanforderung“, die die Validierungslogik enthält return:true; passieren statt return:false; und dann wird es wie ein Zauber wirken.

Der Code wie etwas wie folgt aussehen wird,

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' 
      ]; 
     } 
    } 

wie Sie Middleware verwenden können Authentifizierung für die Seite zu machen, die diese Form enthält ... so brauchen wir nicht, dass die Genehmigung in der FormRequest Klasse . Wenn Sie also "True" zurückgeben, wird dies (Validierung) für alle Fälle autorisiert.

Ich denke jetzt ist es jetzt jedem klar.