2016-11-24 4 views
1
an

Ich bin dabei, eine Web-App zu entwickeln, und ich bin auf ein Problem gestoßen, bei dem ich Formulareingabe validieren muss. Ich habe eine Validierungsklasse gemäß den Laravel-Dokumenten erstellt und die Klasse in meiner Methode typisiert. Das Problem ist, dass ich bereits den Illuminate \ Http \ Request-Klasse-Typ in meiner Methode angegeben habe und type-hinweise, dass meine Validierungsklasse in derselben Methode eine "Forbidden" -Nachricht anzeigt, wenn ich die Seite aktualisiere.Laravel 5.3 - Geben Sie zwei verschiedene Anfrageklassen in Methode

Validation Klasse

<?php 

namespace App\Http\Requests; 

use Illuminate\Foundation\Http\FormRequest; 

class ValidateCalculatorValues extends FormRequest 
{ 
    /** 
    * 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 [ 
      'price' => 'required|numeric', 
      'deposit' => 'required|numeric', 
      'months' => 'required|numeric', 
      'interest' => 'required|numeric', 
     ]; 
    } 
} 

-Controller

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use Illuminate\Cookie\CookieJar; 
use App\Http\Requests\ValidateCalculatorValues; 

public function index($id, Request $request, ValidateCalculatorValues $calculatorInput, CookieJar $cookieJar) 
{ 
    // Code goes here 
} 

Wie kann ich über das tun dies gehen, damit es funktioniert? Fehle ich etwas?

+0

können Sie zu ändern versuchen, die 'autorisieren()' Methode in Ihrer Klasse 'Rückkehr true'? – phobia82

+0

Das schien die Forbidden Antwort zu lösen, aber jetzt sagt Firefox mir, dass die Seite nicht richtig weitergeleitet wird. Ich vermute, dass dies darauf zurückzuführen ist, dass beim ersten Laden der Seite keine Formulardaten vorhanden sind, und versucht daher, auf die gleiche Seite umzuleiten und effektiv eine Endlosschleife zu erstellen. Gibt es eine Möglichkeit, kann ich es nicht überprüfen, wenn keine Formulardaten eingereicht werden? – VenomRush

Antwort

0

Da phobia82 in den Kommentaren erwähnt wurde, musste ich die authorize-Methode für meine Validierungsklasse auf true setzen.

Da das Formular jedoch an dieselbe URL schreibt, auf der sich das Formular befindet, wurde eine unendliche Umleitungsschleife erstellt, weil meine Validierungsregeln so festgelegt wurden, dass alle Felder erforderlich waren. Nachdem ich die Dokumentation angeschaut habe, habe ich "required" in "filled" geändert, was die Redirect-Schleife gelöst hat.

0

Lassen Sie die Request $request in Ihrem Parameter aus, da Ihre ValidateCalculatorValues jetzt die Validierung übernimmt.

public function index($id, ValidateCalculatorValues $calculatorInput, CookieJar $cookieJar) 
{ 
    $allYourInputs = $calculatorInput->all(); 
} 

oder man könnte dies für mehr Konvention tun

public function index($id, ValidateCalculatorValues $request, CookieJar $cookieJar) 
{ 
    $allYourInputs = $request->all(); 
}