ユーザーを検索するフォームを設置して、POSTした時に検索を行い結果を表示するメソッドを呼び出したいのですがうまくいきません。
【viewはこんな感じ】
{!! Form::open(["url" => route("profile.search", ???) , "method" => "POST"]) !!}
<div class="form-group">
<input type="text" name="keyword" class="form-control" placeholder="ユーザー検索">
<button type="submit" class="btn btn-default">
<i class="glyphicon glyphicon-search"></i>
</button>
</div>
{!! Form::close() !!}
【route.phpはこんな感じ】
Route::post("/search/{keyword}", [
"as" => "profile.search",
"uses" => "ProfileController@search"
]);
【コントローラーはこんな感じ】
ProfileController extends Controller {
public function search($keyword) {
$param = "%".$keyword."%";
$results = User::select('name')->where("name", "LIKE", $param)->get();
return view("pages.search_result")->with("results", $results);
}
}
ワイルドカードを使って検索したキーワードに合致するユーザーの名前だけを取得するようにしています。しかし、viewでPOSTする際にformのkeywordフィールドの値を渡すことができません。太字の???の部分です。
$_POST["keyword"]やらInput::get("keyword")やらを入れてみたんですがうまくいきません。何か別の書き方はありますか?よろしくお願いします。
【追記】
POSTではなくGETを使えば動くのですがURLが
__ search/?keyword="検索したキーワード"__
になります。
もっとすっきりと
search/"検索したキーワード"
としたいのです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。