2016-11-10 3 views
1

Ich schaffe Form in Laravel:Laravel GET-Methode für die Suche

<form action="/redeem" method="get" class="sidebar-form"> 
    <div class="input-group"> 
     <input type="text" name="key" class="form-control" placeholder="ENTER VOUCHER CODE"> 
      <span class="input-group-btn"> 
      <button type="submit" name="search" id="search-btn" class="btn btn-flat"><i class="fa fa-search"></i> 
      </button> 
      </span> 
    </div> 
    </form> 

und jetzt, wenn ich versuche zu tragen vor, die ich erhalten:

http://localhost:8888/redeem?key=NBtGJ5pZls&search= 

aber ich brauche nur zu bekommen:

http://localhost:8888/redeem/NBtGJ5pZls 

auch in Route Ich habe:

Route::get('/redeem/{key}', '[email protected]'); 

Wie wird umgeleitet, um/NBtGJ5pZls mit meinem Formular einzulösen?

Antwort

1

auf Ihre Route ändern:

Route::post('/redeem', '[email protected]'); 

Und dann Schlüssel in der Steuerung erhalten:

<form action="/redeem" method="post" class="sidebar-form"> 
    {{ csrf_field() }} 
1

Sie haben 2 Möglichkeiten bekommen:

public function redeem(Request $request) 
{ 
    $key = $request->key; 

Und schließlich Ihre Form ändern :

Die erste ist l und Ihren Frontend-Code wie er ist, aktualisieren Sie die Route und arbeiten Sie mit dem GET-Parameter.

Der zweite verwendet etwas Javascript, um die URL neu zu schreiben, auf die Sie zugreifen möchten. Zum Beispiel dieser (es ist mit jQuery):

$('#search-btn').click(function() { 
    var key = $('input[name=key]').val(); 

    window.location.href = '/redeem/' + key; 
}); 

Ich ziehe die ersten, weil Javascript durch die Endbenutzer geändert werden kann.

+0

danke, ich bevorzuge 1. Lösung –