使用Laravel - Php将输入值传递给URL

时间:2016-04-18 08:50:02

标签: php html laravel

我的目的是将输入值设置为操作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>

路线:

Route::post('/search/the/{names}', 'maincontroller@search');
Route::get('/tfind', 'maincontroller@takefind');

控制器:

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'));
}

当我手动输入通配符键时(例如):

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

首先在文本字段中输入数字5然后按Enter键工作! 但我想要一个动态的方式! 我的主要目的是转换此网址

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

到这个

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

2 个答案:

答案 0 :(得分:0)

通常使用网址查询,例如 http://localhost:8000/search/the/?find=5 。但是如果你想得到像 http://localhost:8000/search/the/5 这样的网址。您应该使用javascript来改变表单操作URL。因为您想通过文本字段上的输入文本更改网址。

答案 1 :(得分:0)

您在routes.php中将names设置为命名路由。所以你需要替换这个

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

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

带变量

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