2017-05-01 3 views
0

Ich habe zwei Senden-Schaltflächen innerhalb eines Formulars, und ich muss erkennen, welche eine bestimmte Aktion ausgelöst wird. Leider ist meine Prüfung nicht zu erfassen, die Absenden-Button geklickt wurde:Laravel Request-Fassade erkennt mehrere Senden-Schaltflächen nicht

Form:

<button type="submit" name="complete"> 
    <span class="btn-label"> 
     <i class="glyphicon glyphicon-save"></i> 
    </span> Submit Audit 
</button> 

<button type="submit" name="pending"> 
    <span class="btn-label"> 
     <i class="glyphicon glyphicon-save"></i> 
    </span> Save Audit 
</button> 

Controller:

public function updateAudit(Request $request, $id) 
{ 
    .... 

    if ($request->has('complete')) { 
     $auditCompleteCheck->completed = 1; 
     $auditCompleteCheck->save(); 
    } 

} 

Wenn ich Ausgang $request ich die complete sehen Schaltfläche wie: "complete" => "" und ähnlich mit ausstehende: "pending" => "".

Aber wenn ich dd($request->has('complete'));, es immer gibt false zurück, obwohl ich es in der Anfrage Tasche sehen kann.

Warum funktioniert der ->has nicht?

Vielen Dank.

+0

Die [ 'hat()'] (https://github.com/laravel/ framework/blob/5.4/src/Illuminate/Http/Bedenken/InteractsWithInput.php # L88) Methode wird immer false für Schlüssel mit leerer Eingabe zurückgeben. – jfadich

Antwort

3

Versuchen Sie, den gleichen Wert für das Attribut name für beide button Elemente und einen anderen Wert für das Attribut value einzustellen.

HTML-Teil:

<button type="submit" name="submit_audit" value="complete"> 
    <span class="btn-label"> 
     <i class="glyphicon glyphicon-save"></i> 
    </span> Submit Audit 
</button> 

<button type="submit" name="submit_audit" value="pending"> 
    <span class="btn-label"> 
     <i class="glyphicon glyphicon-save"></i> 
    </span> Save Audit 
</button> 

Jetzt in Ihrem Controller, können Sie wie folgt vorgehen:

if ($request->submit_audit === 'complete') { 
    // Do something 
} 

if ($request->submit_audit === 'pending') { 
    // Do something else 
} 
+0

Danke Louisfischer! – Ben