2016-07-06 4 views
0

Ich habe eine Laravel App mit einer Javascript-Funktion, die einige Daten erfasst, die ich verwenden, um eine modale Box dynamisch zu füllen.Javascript: Capture-Wert im Formularaktionsfeld von Laravel App verwenden

$(function() { 
    $('#edit-auction-modal').on("show.bs.modal", function (e) { 
    var auctionId = $(e.relatedTarget).data('id'); 
    console.log(auctionId); 
    //auctionId has the correct value for the selected auction. This needs to be used in the View file 
    }); 
}); 

In der Ansichtsdatei habe ich eine modale Box mit einem Formular (um die Felder zu aktualisieren).

<div id="edit-auction-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
     <div class="modal-dialog"> 
      <div class="modal-content"> 
       <div class="panel panel-info"> 
        <div class="panel-heading"> 
        <div class="panel-title" id="auctionLabel"></div> 
        </div> 
       </div> 
       <div class="modal-body edit-content" style="padding-top:10px"> 
        <form method="POST" action="{!! route('admin_auctions_update', ['id' => auctionId ]) !!}"> 
         {{ csrf_field() }} 
         {{ method_field('PUT') }} 
         .... 
        </form> 

den obigen Code verwenden, wird nichts aktualisiert, wie es zu 'Auktionen/auctionId/update' anstelle von 'Auktionen/1/update' oder 'Auktionen/2/update'

Wie zu senden versucht kann ich das ändern, damit ich den Wert von auction0id (aus der JS-Datei) aus meiner Sicht verwenden kann?

Sollte ziemlich trivial sein Ich denke aber meine JS Fähigkeiten unter dem Durchschnitt ...

Antwort

1

Sie könnten so etwas wie dies versuchen:

$(function() { 
    $('#edit-auction-modal').on("show.bs.modal", function (e) { 
     var auctionId = $(e.relatedTarget).data('id'); 
     var pattern = /(auctions\/)(.+)(\/update)/; 
     var action = $('form').attr('action'); 
     $('form').attr('action', action.replace(pattern, "$1" + auctionId + "$3")); 
    }); 
}); 

Erläuterung:

Die Aussicht ist behandelt serverseitig und definiert den HTML-Code ursprünglich an den Browser gesendet. Sie führen keinen PHP-Code über diesen Punkt hinaus. Da auctionId nur als Ergebnis von clientseitigen Ereignissen existiert, ist Ihr einziges Werkzeug zum Ändern des action Attributs JavaScript.

Also, in der Ansicht enthalten Sie nur das JS-Skript, wie ich vermute, dass Sie bereits sind. Sie können die ursprüngliche Aktion auch als {!! route('admin_auctions_update', ['id' => 0 ]) !!} (0 als Standard-Platzhalterwert) schreiben.

Schließlich die Erklärung der regulären Ausdrücke: Klammern definieren Erfassungsgruppen, auf die Sie dann durch Nummer zugreifen können. Also, der erste enthält den String-Inhalt vor der zu ersetzenden ID, der zweite die ID selbst und der dritte den Rest der Zeichenkette.

+0

Vielen Dank für Ihren Vorschlag. Was in der View-Datei kommen muss. Wäre es nur das:

? Für mich zu verstehen: Was sind die $ 1 und $ 3? – wiwa1978

+0

@ wiwa1978 Antwort aktualisiert – alepeino

+0

Ich bekomme das Prinzip. Obwohl der Code die Aktion dynamisch aktualisieren sollte, scheint er immer die ursprüngliche Aktion zu verwenden (mit id = 0). Ich habe eine console.log (action) hinzugefügt; Anweisung in der JS-Datei und es meldet sich immer http: // localhost: 5000/admin/auctions/0 ab. – wiwa1978

Verwandte Themen