我必须遗漏一些非常简单的东西,但我似乎无法找到它。所以我在我的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() }}
当我使用搜索表单时,我得到了NotFoundHttpException
在我的控制器中我有:
public function search()
{
return View::make('hostesses.search');
}
我已经在views / hostesses / search.blade.php上创建了一个模板,其中包含一个简单的hello world消息来检查它是否有效,但我一直得到异常!
答案 0 :(得分:1)
更改路线的顺序并定义&#39;形式为hostesses.search
的命名路径
Route::any('/hostesses/search', array(['as' => 'hostesses.search', 'uses' => 'HostessesController@search');
Route::resource('hostesses', 'HostessesController');
因为正在发生的事情是/hostesses/$id
的资源正在捕获search
ID,并返回id
search
不存在的错误
另外 - 将您的路线更改为Route::any()
。这意味着它将响应&#34; get&#34;和&#34;发布&#34;请求。
但是我建议将您的路线拆分为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
}
并更新您的表单
{{ Form::open(array('route' => 'hostesses.postsearch', 'class' => 'navbar-form navbar-right')) }}
答案 1 :(得分:0)
您需要定义POST路由:
Route::post('/hostesses/postSearch',array('as'=>'hostesses.search','uses' => 'HostessesController@postSearch'));
然后在您的控制器中
public function postSearch()
{
var_dump(Input::get('search_term'));
}