回答編集履歴

3

修正

2017/12/27 00:46

投稿

退会済みユーザー
test CHANGED
@@ -1,9 +1,105 @@
1
+ ```php
2
+
3
+ $data = [['name'=>'リンゴ','chk'=>0],
4
+
5
+ ['name'=>'バナナ','chk'=>1],
6
+
7
+ ['name'=>'オレンジ','chk'=>0]];
8
+
9
+ ```
10
+
1
11
  ```html
2
12
 
13
+ <!DOCTYPE html>
14
+
15
+ <html>
16
+
17
+ <head>
18
+
19
+ <title>sample</title>
20
+
21
+ <meta charset="utf-8">
22
+
23
+ </head>
24
+
25
+ <body>
26
+
27
+ <select>
28
+
29
+ @foreach($data as $value)
30
+
3
- <option value="{{$jtype['id']}}"{{isset($item['value']['jtype0']) && $item['value']['jtype0'] === $jtype['id'] ? 'selected' : ''}}>{{$jtype['name']}}</option>
31
+ <option {{isset($value['chk']) && $value['chk'] == 1 ? 'selected':''}}>{{$value['name']}}</option>
32
+
33
+ @endforeach
34
+
35
+ </select>
36
+
37
+ </body>
38
+
39
+ </html>
4
40
 
5
41
  ```
6
42
 
7
43
 
8
44
 
45
+ データの持ち方は少し違うかもしれませんが、三項演算子を使ったやり方ならこんな感じになります。質問者さんの場合は、ちゃんとデータ自体は保持できているようなので単純に三項演算子の条件に当てはまってない可能性がありますね。「===」を「==」にすれば引っかかるとかあるかもしれません。
46
+
47
+
48
+
49
+ redirect処理でデータを持ち運びしたい場合は、一度sessionに格納してそれを取り出す形で実現できます。
50
+
51
+
52
+
53
+ ```route
54
+
55
+ route
56
+
57
+ Route::get('/index', 'TestController@index');
58
+
59
+ Route::post('/processing', 'TestController@processing');
60
+
61
+ ```
62
+
63
+
64
+
65
+ ```php
66
+
67
+ TestController
68
+
69
+
70
+
71
+ //view
72
+
73
+ public function index()
74
+
75
+ {
76
+
77
+ if($request->session()->has('data') == true)
78
+
79
+ {
80
+
81
+ $data = $request->session()->get('data');
82
+
83
+ $request->session()->forget('data');
84
+
85
+ }
86
+
87
+ }
88
+
89
+
90
+
91
+ public function processing()
92
+
93
+ {
94
+
95
+ $data = 'test';
96
+
97
+ $request->session()->put('data',$data);
98
+
9
- selectedの前に空白があったので消しました。このあたりが原因かもしれませんね。
99
+ return redirect('/index');
100
+
101
+ }
102
+
103
+
104
+
105
+ ```

2

修正

2017/12/27 00:46

投稿

退会済みユーザー
test CHANGED
@@ -1,97 +1,9 @@
1
+ ```html
2
+
1
- コメントを元にコードを書き直してみました。javascriptを使ってます。とりあえずこれで切り替えの連動はできますが、データの持ち方にもよりますね。
3
+ <option value="{{$jtype['id']}}"{{isset($item['value']['jtype0']) && $item['value']['jtype0'] === $jtype['id'] ? 'selected' : ''}}>{{$jtype['name']}}</option>
4
+
5
+ ```
2
6
 
3
7
 
4
8
 
5
- ```php
6
-
7
- $data = [['name'=>'リンゴ','type'=>'果物'],
8
-
9
-   ['name'=>'ポテチ','type'=>'おかし'],
10
-
11
- ['name'=>'コーヒー','type'=>'飲料']];
12
-
13
- ```
14
-
15
- ```html
16
-
17
- <!DOCTYPE html>
18
-
19
- <html>
20
-
21
- <head>
22
-
23
- <title>sample</title>
24
-
25
- <meta charset="utf-8">
26
-
27
- </head>
28
-
29
- <body>
30
-
31
-
32
-
33
- <select name='type'>
34
-
35
- @foreach($data as $value)
36
-
37
- <option>{{$value['type']}}</option>
38
-
39
- @endforeach
40
-
41
- </select>
42
-
43
-
44
-
45
- <select name='name'>
46
-
47
- @foreach($data as $value)
48
-
49
- <option data-type="{{$value['type']}}">{{$value['name']}}</option>
50
-
51
- @endforeach
52
-
53
- </select>
54
-
55
-
56
-
57
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
58
-
59
-
60
-
61
- <script>
62
-
63
- $("[name=type]").change(function(){
64
-
65
- var type = $(this).val();
66
-
67
-
68
-
69
- $("[name=name] option").each(function() {
70
-
71
- var type2 = $(this).data('type');
9
+ selectedの前に空白があったので消しました。このあたりが原因かもしれませんね。
72
-
73
- var data = $(this).val();
74
-
75
-
76
-
77
- if(type === type2)
78
-
79
- {
80
-
81
- $("[name=name]").val(data);
82
-
83
- }
84
-
85
- });
86
-
87
- });
88
-
89
- </script>
90
-
91
-
92
-
93
- </body>
94
-
95
- </html>
96
-
97
- ```

1

修正

2017/12/26 09:27

投稿

退会済みユーザー
test CHANGED
@@ -1,10 +1,14 @@
1
- 条件よってselected付け外ししたいなら
1
+ コメントを元コードを書き直しみました。javascriptを使ってます。とりあえずこれで切り替えの連動はできますがデータの持ち方にもよりますね。
2
2
 
3
3
 
4
4
 
5
5
  ```php
6
6
 
7
- $data = ['りんご','ばなな','オレンジ'];
7
+ $data = [['name'=>'リンゴ','type'=>'果物'],
8
+
9
+   ['name'=>'ポテチ','type'=>'おかし'],
10
+
11
+ ['name'=>'コーヒー','type'=>'飲料']];
8
12
 
9
13
  ```
10
14
 
@@ -24,48 +28,70 @@
24
28
 
25
29
  <body>
26
30
 
31
+
32
+
27
- <select>
33
+ <select name='type'>
28
34
 
29
35
  @foreach($data as $value)
30
36
 
31
- <option @if($value == 'ばなな') selected @endif>{{$value}}</option>
37
+ <option>{{$value['type']}}</option>
32
38
 
33
39
  @endforeach
34
40
 
35
41
  </select>
42
+
43
+
44
+
45
+ <select name='name'>
46
+
47
+ @foreach($data as $value)
48
+
49
+ <option data-type="{{$value['type']}}">{{$value['name']}}</option>
50
+
51
+ @endforeach
52
+
53
+ </select>
54
+
55
+
56
+
57
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
58
+
59
+
60
+
61
+ <script>
62
+
63
+ $("[name=type]").change(function(){
64
+
65
+ var type = $(this).val();
66
+
67
+
68
+
69
+ $("[name=name] option").each(function() {
70
+
71
+ var type2 = $(this).data('type');
72
+
73
+ var data = $(this).val();
74
+
75
+
76
+
77
+ if(type === type2)
78
+
79
+ {
80
+
81
+ $("[name=name]").val(data);
82
+
83
+ }
84
+
85
+ });
86
+
87
+ });
88
+
89
+ </script>
90
+
91
+
36
92
 
37
93
  </body>
38
94
 
39
95
  </html>
40
96
 
41
97
  ```
42
-
43
-
44
-
45
- こんな感じでできます。optionの中にif文書くの気持ちわりぃ!という場合は
46
-
47
-
48
-
49
- ```html
50
-
51
- <select>
52
-
53
- @foreach($data as $value)
54
-
55
- @if($value == 'ばなな')
56
-
57
- <option selected>{{$value}}</option>
58
-
59
- @else
60
-
61
- <option>{{$value}}</option>
62
-
63
- @endif
64
-
65
- @endforeach
66
-
67
- </select>
68
-
69
- ```
70
-
71
- これでもいけますね。