Laravel路由表用方法get

时间:2015-11-01 17:55:22

标签: php laravel laravel-5 laravel-5.1 laravel-routing

我使用的是Laravel 5.1,我遇到了路由问题。目前,我在routes.php

上有这个
Route::get('/', 'ArticleSiteController@index');
Route::get('article/search/{text}', 'ArticleController@search');
Route::get('article/{url}', 'ArticleController@show');
Route::get('/{url}', 'PageController@index');

路由被正确地重定向,但搜索总是使用ArticleController@show路由。

在主页上,我有一个搜索表单。

<form class="form-horizontal" action="http://example.com/article/search/" method="GET">
    <input type="text" name="txtSearch" class="form-control" placeholder="Search for...">
    <span class="input-group-btn">
        <button class="btn btn-primary" type="submit">Go!</button>
    </span>
</form>

重定向到此网址:http://example.com/article/search/?txtSearch=test(这是正确的)但使用ArticleController@show方法而不是ArticleController@search

2 个答案:

答案 0 :(得分:1)

  

http://example.com/article/search/?txtSearch=test

article/search/{text}

不符

您实际上使用http://example.com/article/search/作为查询字符串调用?txtSearch=test。所以它是ArticleController@show动作

的正确网址
http://example.com/article/search/test

应由ArticleController@search

处理

查询参数是传递给特定路线的附加数据,它们不是实际路线的一部分。

答案 1 :(得分:1)

试试这个

Route::get('article/search', 'ArticleController@search');

控制器中的

使用此功能。

public function search(){
    $txtSearch = Input::get('txtSearch');

    $data = MyModel::where('myField','like','%'.$txtSearch.'%')->get();
    return View::make('folder.myFile')->with('data',$data);
}

我希望这对你有所帮助。