Php Laravel 4-仅在一条自定义路由上存在NotFoundHttpException
我一定错过了一些非常简单的东西,但我似乎找不到。因此,我在my routes.php中定义了我的资源,但我需要一个额外的路由,用于带有过滤器和其他内容的高级搜索页面,我的show/update/edit/create。。。页面工作正常,但我的搜索页面不正常 因此,在路线上,我有: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
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之间有什么区别呢?