2016-04-18 2 views
4

Mein Zweck ist es, den Eingabewert zu Aktion URL Formular zu erhalten.Verwenden von Laravel - PHP übergeben Eingangswert an URL

Html:

<form method="POST" action="/search/the/{{$request->find}}"> 
{{csrf_field()}} 
<div id="check" class="input-group margin-bottom-sm">  
    <input class="form-control" type="text" name="find" placeholder="Search"> 
    <button type="submit"><div id="search" class="input-group-addon"><i class="fa fa-search"></i></div></button> 
</div> 
</form> 

Routen:

Route::post('/search/the/{names}', '[email protected]'); 
Route::get('/tfind', '[email protected]'); 

Controller:

public function search($names, Request $request) 
    { 
     //dd($request->find); 
     $names = $request->input('find'); 


    if(!empty($names)){ 
     $find = DB::table('products') 
     ->select('name', 'description', 'price') 
     ->where('name', 'LIKE', '%' . $names . '%') 
     ->orwhere('description', 'LIKE', '%' . $names . '%') 
     ->orwhere('price', 'LIKE', '%' . $names . '%') 
     ->get();  
    } 

    return view('layouts.search', compact('find', 'names')); 
} 
public function takefind(Request $request) 
{ 
    $names = $request->input('find'); 

    return view('layouts.find', compact('names')); 
} 

Wenn ich manuell die Wildcard-Schlüssel steckte es (zum Beispiel) funktioniert:

<form method="POST" action="/search/the/5"> 

Zuerst die Nummer 5 in das Textfeld eingeben und die Eingabetaste drücken! Aber ich möchte einen dynamischen Weg dafür! Mein Hauptzweck dieser ist diese URL

http://localhost:8000/search/the/?find=5 

dieser

http://localhost:8000/search/the/5 

Antwort

0

Normalerweise Laravel Abfrage wie http://localhost:8000/search/the/?find=5 mit URL zu konvertieren. Aber wenn Sie URL wie http://localhost:8000/search/the/5 erhalten möchten. Sie sollten stattdessen JavaScript verwenden, um die URL für die Formularaktion zu ändern. weil Sie URL durch Eingabe Text in Textfeld ändern möchten.

+0

Können Sie mir ein Beispiel bitte? –

+0

Sie können

zum ersten Mal verwenden. Wenn der Browser die Wiedergabe beendet hat, können Sie nicht per PHP-Code routen. also solltest du stattdessen Javascript verwenden. ' ' – Sopheak

+0

Es scheint richtig .. aber wo es die Variable in + this.val() bekommt. Etwas ist unvollendet .. können Sie das Beispiel vervollständigen ..? –

0

Sie haben names als benannte Route in routes.php festgelegt. So müssen Sie diese

<form method="POST" action="/search/the/5">

mit

<form method="POST" action="{{route('/search/the', ['names' => 5])}}">

mit

Variable ersetzen

<form method="POST" action="{{route('/search/the', ['names' => $request->find])}}">

+0

Ja, es funktioniert für Nummer 5 (dies ist ein manueller Weg). 5 ist ein Beispiel, das ich nicht für jede Suche wollen. Ich möchte eine Variable statt 5, um das dynamisch zu tun. –

+0

5 war ein Beispiel, das ich benutzt habe. Sie können alles eingeben. Für zB '' – ryanicle

+0

Ja, ich habe es vorher versucht zeigt mir. Nicht definierte Variable: Anfrage (Ansicht: C: \ wamp64 \ www \ test3 \ resources \ views \ layouts \ find.blade.php) –

Verwandte Themen