2016-12-03 21 views
2

私のフォームは検証問題:Laravel 5.3

<form method="POST" action="http://localhost:1234/Update" accept-charset="UTF-8"> 
    <input name="_token" type="hidden" value="bVyYZGPprZKHab8sQXairqhtwszTeQ36LRhp9u2k"> 
    <input type="hidden" name="_token" value="bVyYZGPprZKHab8sQXairqhtwszTeQ36LRhp9u2k"> 

    <select class="form-control" name="TypeID"> 
     <option value="-1">Please select Payment Type</option> 
      <option value="2">Bitcoin</option> 
      <option value="1">Paypal</option> 
      <option value="3">Pioneer</option> 
    </select> 
    <button type="submit">Update</button> 
</form> 

以下のようにコントローラのアクションメソッドは、要求クラスが

class PaymentDetailsRequest extends Request { 

    public function authorize() 
    { 
     return true; 
    } 

    public function rules() { 
     return [ 
      'TypeID' => 'required|min:1', 
     ];    
    } 
} 
を下回っている

public function UpdatePaymentDetails(PaymentDetailsRequest $request) { } 

を下回るようになっています

問題が何ですか。

TypeIDを選択しなかった場合、私は何か不足していますか?

+1

自分のルールに 'numeric'ルールを追加してみてくださいを。私は、 '-1'が*文字列*' '-1 ''として扱われているという疑いがあります。したがって、 'min:1'は文字列に少なくとも一つの文字がなければならないことを意味します。 – ceejayoz

+0

@ TomasButeler'sを受け入れることをお勧めします。彼は同時に同じことを微調整し、すでに答えがあります。乾杯! – ceejayoz

答えて

5

TypeIDはおそらく文字列として渡され、常に2(-1)の文字長で渡されるため、独自のルールに従って有効です。デフォルトでは従来の空の値を使用してみませんか?これにより、requiredルールが失敗し、要求が拒否されます。

<select class="form-control" name="TypeID"> 
    <option value="">Please select Payment Type</option> 
    <option value="2">Bitcoin</option> 
    <option value="1">Paypal</option> 
    <option value="3">Pioneer</option> 
</select> 

また、あなたはceejayozの提案@従うと、このようなあなたのTypeIdの数値検証、強制することができます

// PaymentDetailsRequest.php 

public function rules() { 
    return [ 
     'TypeID' => 'required|numeric|min:1', 
    ];    
} 
+0

私は投票をしました。これは解決策ではなく解決策であるためです。 @ceejayozによって投稿されたコメントを参照してください。しかし、ceejayozによって提案されたものを追加すると、私はdownvoteを取り戻します。これは受け入れ済みとマークされます。 – Pankaj

+0

@Helper私は@ceejayozの提案を組み入れました。それでも、HTMLフォームを調整して回避策を検討する理由が不思議です。 OPがデフォルト値を拒否しようとしている場合、それが決して処理されない、またはデータベースに挿入されないと考えるなら、それは本当に重要なのですか?私は '-1'は不要だと考えました。 –

+0

私は "数値"をより良い選択肢と考え、OPは私です:)この投稿は私によって作成されました。 – Pankaj