質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

1回答

5339閲覧

LaravelでPOSTしたフォームの値をURLに含める方法

退会済みユーザー

退会済みユーザー

総合スコア0

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2015/09/14 02:14

編集2015/09/14 04:54

ユーザーを検索するフォームを設置して、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/"検索したキーワード"
としたいのです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こんにちは。

すでにHTMLとして出力してあるため???部分に
そのHTML内の<input name="keyword">に入力した値を入れることはこの場合PHPだけでは行えません。
このroutingで行う場合は、解決する方法の一つにjavascriptを併用する方法があるかと思われます。

  1. buttonのtypeをsubmitからbuttonに変えます。

html

1<button type="button" class="btn btn-default">
  1. jQueryを用いると動作させていないので動かないかもしれませんが、次のようなコードでbuttonをクリックした際にactionを変えた上で/search/{keyword}にsubmitします。

javascript

1$('form button').on('click',function(){ 2 var form $(this).closest('form'); 3 var keyword = form.find('input[name="keyword"]').val(); 4 if (keyword) { 5 form.attr('action', '/search/' + encodeURIComponent(keyword)); 6 form.submit(); 7 } 8});

誤解があるかもしれませんが、ご参考までに。

投稿2015/09/14 04:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問