我尝试获取值表单搜索框并发送到控制器方法以显示对象
我尝试使用get方法表单但不起作用。
这是我的观点
<form method="GET" action="search" accept-charset="UTF-8">
<div id="custom-search-input">
<div class="input-group col-md-12">
<input type="text" class="form-control input-lg" placeholder="enter word" />
<span class="input-group-btn">
<button class="btn btn-info btn-lg" type="submit">
<i class="glyphicon glyphicon-search"></i>
</button>
</span>
</div>
</div>
</form>
这是我的路线
Route::get('/search', 'IndexController@search');
Route::controller('index', 'IndexController');
这是我的控制器
public function getIndex() {
$words = Word::all();
return view('dict.index', compact('words'));
}
public function search($id) {
$words = Word::find($id);
if (empty($article)) {
abort(404);
}
return view('dict.index', compact('words'));
}
答案 0 :(得分:1)
我认为新手做这样的事情的最佳方法是使用Laravel Collective Forms & HTML包(这是Laravel 4的一部分)。
{!! Form::open(array('method' => 'Get', 'route' => array('route.name', $variable))) !!}
{!! Form::text('search') !!}
<button>Search</button>
{!! Form::close() !!}
在控制器中,您可以使用:
访问变量public function search(Request $request)
{
$request->get('search');
答案 1 :(得分:1)
将路线更改为
Route::get('/search/{id}', 'IndexController@search');
答案 2 :(得分:0)
让我们从Routes
Route::get( '/search', 'IndexController@search' )->name('search');
现在看控制器
$words = ( new Words )->whereHas( 'translations', function ( $q ) use ( $keywords ) {
$q->where( 'name', 'like', '%' . $keywords . '%' )
->orWhere( 'details', 'like', '%' . $keywords . '%' );
} )->get();
和@AlexeyMezenin建议
{!! Form::open([
'route'=>['search'],
'method'=>'get']) !!}
{!! Form::text('keywords', null, ['placeholder'=>'What are you looking?', 'class'=>'form-control' ]) !!}
<button><i class="fa fa-search"></i></button>
{!! Form::close() !!}
我知道它很老的问题,但希望它可以帮助像我这样的人:)