回答編集履歴

1

コメントの内容を受けて追記

2016/09/28 07:14

投稿

Archsted
Archsted

スコア452

test CHANGED
@@ -43,3 +43,97 @@
43
43
 
44
44
 
45
45
  とすると考えやすいかと思います。
46
+
47
+
48
+
49
+ ---
50
+
51
+
52
+
53
+ # コメントの内容を受けて追記
54
+
55
+
56
+
57
+ 最初に私が挙げた回答ですと、検索結果のデータはビューに送っていますが、一覧のデータをビューに送っていないため、一覧を表示する所でエラーが出てしまったのだと思います。
58
+
59
+
60
+
61
+ ビューに複数種のデータを表示したい場合(仮に一覧が`$res`、検索結果が`$search_result`に格納されているならば)Controllerの最後でビューを返す際に、以下のように書けます。
62
+
63
+ (withを使う書き方もあります。要はいくつものデータを同時にビューに渡せるという事です)
64
+
65
+
66
+
67
+ ```PHP
68
+
69
+
70
+
71
+ return view('index', ['res' => $res, 'search_result' => $search_result]);
72
+
73
+ return view('index', compact('res', 'search_result')); // こう書いても同等
74
+
75
+
76
+
77
+ ```
78
+
79
+
80
+
81
+ marrymejyjさんの書かれたコードですと、「データの取得部分」と「コントローラとしての振る舞い」が同居してしまっているため、分離した方がいいと思われます。
82
+
83
+ 現在のソースをベースに、日本語交え大雑把に書くと以下のような感じでしょうか。
84
+
85
+
86
+
87
+ ```PHP
88
+
89
+
90
+
91
+ // Controller
92
+
93
+ public function 一覧表示() // getIndexにあたるもの
94
+
95
+ {
96
+
97
+ $res = データ一覧を取得する処理();
98
+
99
+
100
+
101
+ return view('index', ['res' => $res]);
102
+
103
+ }
104
+
105
+
106
+
107
+ public function 検索と結果表示() // searchInputにあたるもの
108
+
109
+ {
110
+
111
+ $input = Request::all();
112
+
113
+ $search_result = 検索結果を取得する処理($input);
114
+
115
+
116
+
117
+ $res = データ一覧を取得する処理();
118
+
119
+
120
+
121
+ return view('index', ['res' => $res, 'search_result' => $search_result]);
122
+
123
+ }
124
+
125
+
126
+
127
+ ```
128
+
129
+
130
+
131
+ **データ一覧を取得する処理()** や **検索結果を取得する処理()** の最後は
132
+
133
+ `view`を`return`するのではなく、単純に**データベースの検索結果**をreturnしてあげてください。
134
+
135
+ データ一覧を別の画面で出したいような場合に、同じメソッドが使い回せるようになります。
136
+
137
+
138
+
139
+ 一例としてお試しください。