2016-08-29 7 views
0

Ich habe eine Form, deren WirkungAppend Formularaktion mit Eingangsgröße

<form action="/food/vegetable" method="POST" > 

mein Controller Methode nimmt Pflanzenname als Parameter

Ich mag würde die Eingangs vegetable Namen der Aktion anzuhängen. zum Beispiel

<form action="/food/vegetable/{vegetableName}" method="POST" > 

Ist es möglich, dies zu tun? oder gibt es einen besseren Weg? Bitte führen.

+1

Sicher kannst du es so machen. Ein Vorschlag jedoch, sehen Sie sich "benannte Routen" in der [Laravel Dokumentation] (https://www.laravel.com/docs/5.3/routing#named-routes) –

+0

Sehr empfehlen Named Routes auch. Dadurch wird dem Routing-Muster eine Abstraktionsebene hinzugefügt. Wenn Sie also den Endpunkt ändern, müssen Sie nur eine Stelle ändern. – Ohgodwhy

Antwort

0

Da Sie Daten mit POST-Methode senden, setzen Sie diese verstecktes Feld in das Formular:

<input type="hidden" name="vegetableName" value="{{ $vegetableName }}"> 

Dann Sie diese Daten in einem Controller bekommen:

$vegetableName = $request->vegetableName; 
0

Sie jquery verwenden können Ereignis absenden

$('form').submit(function(e){ 
    e.preventDefault(); 
    var veg = $("#INPUTBOX_ID").val(); 
    location.href = "/food/vegetable"+veg; 

});

können Sie Wert von veg verarbeiten, wie Sie wollen.

0

Geben Sie Ihrem Formular eine ID und dann in JS können Sie den folgenden Code schreiben.

Wenn Sie erhalten das Gemüse param als Parameter in der URL der Form (ex. Path/to/form? Gemüse = Karotte) können Sie die folgende Funktion verwenden, um die Namen des param zu bekommen

function getParameterByName(name) { 
 
    url = window.location.href; 
 
    name = name.replace(/[\[\]]/g, "\\$&"); 
 
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
 
     results = regex.exec(url); 
 
    if (!results) return null; 
 
    if (!results[2]) return ''; 
 
    return decodeURIComponent(results[2].replace(/\+/g, " ")); 
 
} 
 
var vegetable = getParameterByName("vegetable"); 
 
document.getElementById("myForm").action = "/food/vegetable/"+vegetable;
<form id="myForm" action="/food/vegetable/{vegetableName}" method="POST" > 
 
</form>

Verwandte Themen