2016-11-24 44 views
1

我正在開發一個web應用程序,並且遇到了需要驗證表單輸入的問題。我根據laravel文檔和類型創建了一個驗證類 - 在我的方法中暗示了這個類。問題是我已經得到了Illuminate \ Http \ Request類的類型 - 在我的方法和類型中暗示了 - 當我刷新頁面時,在相同的方法中暗示我的驗證類出現了「Forbidden」消息。Laravel 5.3 - 在方法中暗示兩個不同的請求類

驗證類

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

控制器

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

我如何去這樣做,這樣是否可行?我錯過了什麼嗎?

+0

你可以嘗試改變'授權()'方法在你的類'回報TRUE'做到這一點? – phobia82

+0

這似乎解決了Forbidden的反應,但現在Firefox告訴我,頁面沒有正確重定向。我懷疑這是因爲頁面第一次加載時沒有任何表單數據,所以它試圖重定向回到同一頁面並有效地創建一個無限循環。如果沒有任何表單數據提交,我可以設置它不做檢查嗎? – VenomRush

回答

0

由於phobia82在評論中提到,我需要將我的驗證類的授權方法設置爲true。

但是,因爲表單發佈到表單所在的網址上,所以創建了無限重定向循環,因爲我的驗證規則已設置,因此所有字段都是必需的。在查看文檔後,我將「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(); 
}