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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel 5

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

Q&A

解決済

1回答

4226閲覧

laravel5 フォームからの値の受け取り

nabex

総合スコア66

Laravel 5

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

0グッド

0クリップ

投稿2016/10/05 09:05

編集2016/10/05 09:18

lalavelで下記のソースにあるような問題を画面に表示させ、選択肢をラジオボタンで選んだ値をコントローラーで受け取って判定させた結果を返したいのですが、値を受け取る部分が上手く出来ません。

コントローラをもう一つ増やしてそこで受け取ることも考えたのですが、出来るだけシンプルで無駄のない実装をしたいと考えています。

studyコントローラーのindex関数で問題文をviewへ渡し、viewのラジオボタンで選択した値をGetRequest関数で受け取り、判定した結果を再度画面へ戻す。

この方向であってますでしょうか?
その他にもお気づきの点があればご指摘頂きたいです。
よろしくお願いします。

lang

1<!DOCTYPE html> 2<html> 3 <head> 4 <!-- CSSを追加 --> 5 <link rel="stylesheet" type="text/css" href="/css/style.css"> 6<meta charset="UTF-8"> 7 8 </head> 9 10 <body> 11 12 <h1>クイズ</h1> 13 14 15 <label>{{ $list_a }}</label> 16 <form action="/study" method="get"> 17 <input id="b" name="answer" type="radio">{{ $list_b }}</label><br> 18 <input id="c" name="answer" type="radio">{{ $list_c }}</label><br> 19 <input id="d" name="answer" type="radio">{{ $list_d }}</label><br> 20 <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>"> 21 <input type="submit"> 22 </form> 23 <br> 24</body> 25</html> 26

lang

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Http\Requests; 7use Input; 8class StudyController extends Controller 9{ 10 // 11 public function index(Request $request){ 12 13 // 配列に値をセット 14 $list_a = "EUから離脱した国は?"; 15 $list_b = "イギリス"; 16 $list_c = "フランス"; 17 $list_d = "ドイツ"; 18 19 //return view('contact'); 20 return view('study', compact('list_a', 'list_b', 'list_c', 'list_d' )); 21 //$keyword = Input::get('favorite');exit; 22 } 23 public function GetRequest(Request $request) { 24 //キーワード受け取り 25 $keyword = Input::get('answer'); 26 var_dump($keyword); exit; 27 if($keyword = $list_b){ 28 29 $result = '正解です'; 30 } 31 $result = '不正解です'; 32 //$favorite = Request::input('favorite'); 33 //ar_dump($keyword);exit; 34 return view('study', compact('result' )); 35 } 36} 37 38

lang

1Route::get('study', 'StudyController@index');

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

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

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

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

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

guest

回答1

0

ベストアンサー

<form action="/study" method="get"> Route::get('study', 'StudyController@index');

これだとformで送られた値はStudyControllerのindexメゾットに飛んでしまうのでは?
GetRequestに送りたい場合は新たにルートを設定した方がよいかと。

【追記】
書くとしたらこんな感じですかね。

<form action="/study_run" method="get"> Route::get('study', 'StudyController@index'); Route::get('study_run', 'StudyController@GetRequest');

たびたび追記してすみません。indexメゾットに

$list_a = "EUから離脱した国は?"; $list_b = "イギリス"; $list_c = "フランス"; $list_d = "ドイツ";

と書いておくのは回りくどいような気がします。直接htmlに問題文と回答を書いて、GetRequestの方で
改めて答えである

$list_b = "イギリス";

をセットしたほうがスマートのような気がします!あくまでこれは主観ですが

投稿2016/10/05 09:20

編集2016/10/05 09:31
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

nabex

2016/10/05 09:38

ありがとうございます。routeの設定がそこまでわかっていませんでした。コントローラーに書いて渡していたのは、最終的にDBから問題文と選択肢をモデルで取得し、コントローラーからviewへ渡すのを想定しているからですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問