2017-11-25 7 views
0

Mein Controller wie folgt aus:Wie kann ich Bedingung in Regeln Laravel hinzufügen?

<?php 
use App\Http\Requests\StoreReceiveOrderRequest; 
class SellController extends Controller 
{ 
    public function receiveOrder(StoreReceiveOrderRequest $request) 
    { 
     dd($request->all()); 
     ... 
    } 
} 

Bevor in der receiveOrder Methode ausgeführten Anweisung, wird es Regeln für die StoreReceiveOrderRequest überprüfen

Die StoreReceiveOrderRequest wie folgt aus:

<?php 
namespace App\Http\Requests; 
use Illuminate\Foundation\Http\FormRequest; 
class StoreReceiveOrderRequest extends FormRequest 
{ 
    public function rules() 
    { 
     return [ 
      'is_follow_up'=>'required', 
      'note'=>'max:300' // I want to make this to be required if is_follow_up = n 
     ]; 
    } 
} 

das Ergebnis dd($request->all());, Es gibt 2 Ergebnisse, abhängig von der Benutzereingabe

Wenn t er is_follow_up = y, das Ergebnis wie folgt aus:

Array 
(
    [is_follow_up] => y 
) 

Wenn die is_follow_up = n, wobei das Ergebnis wie folgt aus:

Array 
(
    [is_follow_up] => n 
    [note] => test 
) 

Wenn is_follow_up = n, ich möchte, um die Notiz machen, ist

erforderlich

Wenn is_follow_up y =, wird die Banknote nicht

erforderlich

scheint es Bedingung auf den Regeln

hinzufügen müssen

Wie kann ich es tun?

Antwort

3

Es gibt eine Gültigkeitsregel, die genau dies bereits der Fall ist. Die Laravel-Dokumente zur Validierung listen alle verfügbaren Regeln auf.

'note' => 'required_if:is_follow_up,n|...' 

Laravel 5.3 - Docs - Validation - Rule - required if

+0

Scheint du mir helfen kannst. Schau dir das an. https://stackoverflow.com/questions/47726407/how-can-i-add-condition-based-on-the-parameters-of-the-array-data-on-the-rules-l. Das ist ein bisschen anders –

0

Ändern Sie einfach Ihre Validierung der folgenden-

<?php 
namespace App\Http\Requests; 
use Illuminate\Foundation\Http\FormRequest; 
    class StoreReceiveOrderRequest extends FormRequest 
    { 
     public function rules() 
     { 
     $rules = ['is_follow_up'=>'required', 
      ]; 

     if (Input::get('is_follow_up')=='n') { 
      $rules += [ 
      'note'=>'max:300' 
      ]; 
     } 
     } 
    } 
-1

Die Laravel Dokumentation für die Liste aller verfügbaren Validierungsregeln lesen.

'note' => 'required_if:is_follow_up,n|...' 
+0

Scheint du kannst mir helfen. Schau dir das an. https://stackoverflow.com/questions/47726407/how-can-i-add-condition-based-on-the-parameters-of-the-array-data-on-the-rules-l. Dies ist ein bisschen anders –

+0

@akramwahld ich verstehe wirklich nicht, was ist der Punkt der Buchung der gleichen Antwort, die bereits hier ist ... 2 Tage später – lagbox

+0

@lagbox, es ist nichts von Ihrem Geschäft, ich kann jede Frage beantworten, die ich jederzeit kann und es ist offensichtlich, dass ich die SO-Regeln nicht verletze, –

Verwandte Themen