Php Laravel 4-仅在一条自定义路由上存在NotFoundHttpException

Php Laravel 4-仅在一条自定义路由上存在NotFoundHttpException,php,laravel,laravel-4,Php,Laravel,Laravel 4,我一定错过了一些非常简单的东西,但我似乎找不到。因此,我在my routes.php中定义了我的资源,但我需要一个额外的路由,用于带有过滤器和其他内容的高级搜索页面,我的show/update/edit/create。。。页面工作正常,但我的搜索页面不正常 因此,在路线上,我有: Route::resource('hostesses', 'HostessesController'); Route::get('/hostesses/search', 'HostessesController@s

我一定错过了一些非常简单的东西,但我似乎找不到。因此,我在my routes.php中定义了我的资源,但我需要一个额外的路由,用于带有过滤器和其他内容的高级搜索页面,我的show/update/edit/create。。。页面工作正常,但我的搜索页面不正常

因此,在路线上,我有:

 Route::resource('hostesses', 'HostessesController');
 Route::get('/hostesses/search', 'HostessesController@search');
我的主页上有一个搜索表单,如下所示:

{{ Form::open(array('route' => 'hostesses.search', 'class' => 'navbar-form navbar-right')) }}
    <div class="form-group">
        {{ Form::text('search_term', '', array('class' => 'form-control')) }}
    </div>
    {{ Form::submit('Submit', array("class"=>'btn btn-default')) }}
{{ Form::close() }}

我已经在views/hostesses/search.blade.php上创建了一个模板,其中包含一条简单的hello world消息,以检查它是否有效,但我一直遇到例外

更改路线的顺序,并“定义”女主人的指定路线。搜索表单中的

Route::any('/hostesses/search', array(['as' => 'hostesses.search', 'uses' => 'HostessesController@search');
Route::resource('hostesses', 'HostessesController');
{{ Form::open(array('route' => 'hostesses.postsearch', 'class' => 'navbar-form navbar-right')) }}
因为发生的是
/hostesses/$id
的资源正在捕获
搜索
id,并返回一个
搜索
id
不存在的错误

另外-将路线更改为
route::any()
。这意味着它将响应“获取”和“发布”请求

但是,我建议将您的路由拆分为
getSearch()
postSearch()
函数,并执行以下操作:

Route::get('/hostesses/search', array(['as' => 'hostesses.getsearch', 'uses' => 'HostessesController@getSearch');
Route::post('/hostesses/search', array(['as' => 'hostesses.postsearch', 'uses' => 'HostessesController@postSearch');
Route::resource('hostesses', 'HostessesController');


public function getSearch()
{
   return View::make('hostesses.search');
}

public function postSearch()
{
      // Do validation on form
      // Get search results and display
}
并更新您的表格

Route::any('/hostesses/search', array(['as' => 'hostesses.search', 'uses' => 'HostessesController@search');
Route::resource('hostesses', 'HostessesController');
{{ Form::open(array('route' => 'hostesses.postsearch', 'class' => 'navbar-form navbar-right')) }}

您需要定义邮政路线:

Route::post('/hostesses/postSearch',array('as'=>'hostesses.search','uses' => 'HostessesController@postSearch'));
然后在你的控制器里

public function postSearch()
{

    var_dump(Input::get('search_term'));

}

为什么要更改功能/路由的名称?这可能是问题的一部分吗?我确实得到了var_dump输出,但是如果我将其更改为返回View::make('hostesses.search');我得到一个白色页面我没有更改它,你应该保留你的get方法,因为你需要一个用于显示表单的路由,另一个用于获取输入值。将其更改为route::any()哦-我刚刚意识到-你使用的是命名路由,但尚未定义它-检查我的更新答案我得到的路由[hostesses.search]未定义。在我的表单页面上,你发布的代码与我的表单相同,我想是的-我已经更新了我的答案-检查新代码-如果你要使用它,你需要定义路线名称。是的,它现在可以工作了,谢谢!那么getSearch和postSearch之间有什么区别呢?