2017-03-25 7 views
0

ein Formular mit einer Aktion zu machen habe ich eine Form:Laravel: Wie für jede Taste

<form action="caption/{{$caption->id}}" method="delete"> 
    <p value='{{$caption->id}}'>{{$caption->content}}</p> 
    <button type="submit">Delete caption</button> 
    <button type="submit" formaction="<SEND A PUT TO CAPTION/CAPTION_ID>">Accept caption</button> 
</form> 

Diese Form übernimmt die Löschung oder die Genehmigung von nicht genehmigten Beschriftungen für Bilder auf meiner Website. Ich habe das Formular so eingerichtet, dass eine DELETE an caption/caption_id gesendet wird, wenn Delete button gedrückt wird.

Jetzt, nach Drücken der Accept caption-Schaltfläche, möchte ich das $caption->approved Feld auf 1 (es ist standardmäßig 0) festgelegt werden. Ich habe darüber nachgedacht, wie dies zu tun ist, und meine vorgeschlagene Lösung (die ich nicht implementieren kann) ist diese:

Wenn Sie das Akzeptieren drücken, senden Sie der Website eine POST Anfrage an caption/caption_id. Die POST wird dann von dem Routing behandelt, das es an einen Controller sendet, wo ich mache, was ich tun muss.

Fragen:

  1. Wie implementiere ich diese Lösung?
  2. Wenn meine Lösung unpraktisch oder dumm ist, was ist eine bessere Lösung?

Thx

+0

Es gibt nichts, das als formaction bezeichnet wird. Sie müssen sich damit befassen, indem Sie Javascript verwenden, um Ihre DOM-Elemente zu steuern. – hassan

+0

Können Sie erklären, wie? – Sahand

+0

Haben Sie ein faires JavaScript-Bewusstsein? nimmst du jquery? – hassan

Antwort

0

Könnten Sie nicht die Anfrage senden jeweils in einer Form mit der gewünschten Zielaktion und Verfahren unter Verwendung von zwei Tasten,?

{{ $caption->content }} 
<form action="caption/{{ $caption->id }}" method="POST"> 
    <button type="submit">Approve</button> 
</form> 
<form action="caption/{{ $caption->id }}" method="POST"> 
    <input name="_method" type="hidden" value="DELETE"/> 
    <button type="submit">Reject</button> 
</form> 

Dieser Ansatz bedeutet, dass Sie kein JavaScript verwenden müssen.

+0

Ja, ich habe nicht einmal daran gedacht. Danke! – Sahand

+0

Sind Sie sicher, dass dies mit Ihnen funktioniert? :) https://laravel.com/docs/5.4/routing#form-method-spoofing !! Wie ich weiß, DELETE-Methode ist nicht für HTML-Formulare! 'HTML-Formulare unterstützen keine PUT-, PATCH- oder DELETE-Aktionen. ...... ' – hassan

+0

Danke für das darauf hingewiesen, @hassan - Ich habe die Antwort aktualisiert. – Kriptonic

Verwandte Themen