2016-11-24 10 views
1

Webアプリケーションの開発中です。フォーム入力を検証する必要がある問題が発生しました。私はlaravelドキュメントに基づいて検証クラスを作成し、私のメソッドでクラスをヒントしました。問題は、私はすでにIlluminate \ Http \ Requestクラスを自分のメソッドにヒントを与えて、同じメソッドで自分のバリデーションクラスをヒントして、ページをリフレッシュするときに "禁止された"というメッセージが表示されることです。それが動作するようにLaravel 5.3 - メソッド内の2つの異なるリクエストクラスをヒンティングする

<?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 
} 

バリデーションクラス

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

コントローラは、どのように私はこれをやって行くのですか?何か不足していますか?

+0

のためにこれを行うことができますが、リターン 'true'にあなたのクラスの'オーソライズ() 'メソッドを変更してみてください? – phobia82

+0

これはForbiddenのレスポンスを解決するように思えましたが、Firefoxはページが正しくリダイレ​​クトされていないと私に伝えています。これは、ページが最初に読み込まれたときにフォームデータがないため、同じページにリダイレクトしようとしていて、効果的に無限ループを作成しているためです。フォームデータが提出されていない場合、チェックを行わないように設定する方法はありますか? – VenomRush

答えて

0

コメントにphobia82が記載されているので、私は自分の検証クラスのauthorizeメソッドをtrueに設定する必要がありました。

フォームが同じURLにポストしているので、すべてのフィールドが必要になるように検証ルールが設定されているため、無限のリダイレクトループが作成されていました。ドキュメントを見て、 "required"を "filled"に変更してリダイレクトループを解決しました。

0

ValidateCalculatorValuesが検証を処理するようになりましたので、パラメータにRequest $requestを省略してください。

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

またはあなたがより多くの大会

public function index($id, ValidateCalculatorValues $request, CookieJar $cookieJar) 
{ 
    $allYourInputs = $request->all(); 
} 
関連する問題