やりたいこと
viewのformで入力されたものをcontrollerの $keyword = $_POST['keyword'] ? $_POST['keyword'] : ''; で受け取りたい!!
ですが、うまくいきません。。
具体的に言うと、、、
-
- // $keyword = $_POST['keyword'] ? $_POST['keyword'] : '';
↑
このように上をコメントアウトして直接値を入れているとviewにはちゃんと表示される。
-
- formのactionを{{ route('/home') }}など色々設定してみたけどうまく行かない。下記のエラーが出る。
Route [/home] not defined. (View: /work/resources/views/home/top.blade.php)
- $keyword = $_POST['keyword'] ? $_POST['keyword'] : '';
//$keyword = '金沢';
↑
このようにコメントアウトを逆にすると下記のエラーが出る。
Undefined index: keyword
このコードたちです
view
1<form action="" method="POST"> 2{{csrf_field()}} 3<div class="p-form"> 4 <div class="p-form-inner"> 5 <input type="text" name="keyword" placeholder="フリーワード検索(店名 地名、駅名など)"> 6 <input type="submit" value=検索> 7 </div> 8 </div> 9 </form> 10
controller
1 public function test2(){ 2 // $keyword = $_POST['keyword'] ? $_POST['keyword'] : ''; 3 4 var_dump($_POST); 5 6 $keyword = '金沢'; 7 $baseurl = 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/'; 8 $params = [ 9 'key' => 'APIキーは伏せさせて頂きます', 10 'format' => 'json', 11 'keyword' => $keyword, 12 'count' => 20, 13 ]; 14 $url = $baseurl . '?' . http_build_query($params, '', '&'); 15 16 // リクエストを送り結果を取得 17 $result = file_get_contents($url); 18 19 // 取得した翻訳結果のjsonをPHPの連想配列に変換 20 $json = json_decode($result, true); 21 // print_r($json); 22 23 $shops = $json['results']['shop']; 24 25 // エラーがあった場合 26 if( isset($json['results']['error']) ){ 27 echo $json['results']['error'][0]['message']; 28 exit; 29 } 30 31 // 取得件数 32 $results_available = $json['results']['results_available']; 33 if( $results_available > 100 ){ 34 $results_available = 100; 35 } elseif( $results_available == 0 ) { 36 echo '指定の条件ではお店が見つかりませんでした。'; 37 exit; 38 } 39 return view('home.top',compact('keyword','shops' ,'json','results_available')); 40 } 41
route
1Route::get('/home', 'App\Http\Controllers\HomeController@top'); 2Route::get('/home', 'App\Http\Controllers\HomeController@test2'); 3
説明がわかりにくいとは思いますが、解決方法教えてください!!!
よろしくお願い致します!