teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

インデントされていコードがあったので修正

2018/04/12 10:41

投稿

KIYZ
KIYZ

スコア17

title CHANGED
File without changes
body CHANGED
@@ -91,38 +91,38 @@
91
91
  __/microposts/resources/views/commons/navbar.blade.php__
92
92
  ```
93
93
  <header>
94
- <nav class="navbar navbar-inverse navbar-static-top">
95
- <div class="container">
96
- <div class="navbar-header">
97
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
98
- <span class="sr-only">Toggle navigation</span>
99
- <span class="icon-bar"></span>
100
- <span class="icon-bar"></span>
101
- <span class="icon-bar"></span>
102
- </button>
103
- <a class="navbar-brand" href="/">Microposts</a>
104
- </div>
105
- <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
106
- <ul class="nav navbar-nav navbar-right">
107
- @if (Auth::check())
108
- <li>{!! link_to_route('users.index', 'Users') !!}</li>
109
- <li class="dropdown">
110
- <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ Auth::user()->name }} <span class="caret"></span></a>
111
- <ul class="dropdown-menu">
112
- <li>{!! link_to_route('users.show', 'My profile', ['id' => $user->id]) !!}</li>
113
- <li>{!! link_to_route('micropost.favorites', 'Favorites') !!}</li> <!--TODO-->
114
- <li role="separator" class="divider"></li>
115
- <li>{!! link_to_route('logout.get', 'Logout') !!}</li>
116
- </ul>
117
- </li>
118
- @else
119
- <li>{!! link_to_route('signup.get', 'Signup') !!}</li>
120
- <li>{!! link_to_route('login.get', 'Login') !!}</li>
121
- @endif
122
- </ul>
123
- </div>
124
- </div>
125
- </nav>
94
+ <nav class="navbar navbar-inverse navbar-static-top">
95
+ <div class="container">
96
+ <div class="navbar-header">
97
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
98
+ <span class="sr-only">Toggle navigation</span>
99
+ <span class="icon-bar"></span>
100
+ <span class="icon-bar"></span>
101
+ <span class="icon-bar"></span>
102
+ </button>
103
+ <a class="navbar-brand" href="/">Microposts</a>
104
+ </div>
105
+ <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
106
+ <ul class="nav navbar-nav navbar-right">
107
+ @if (Auth::check())
108
+ <li>{!! link_to_route('users.index', 'Users') !!}</li>
109
+ <li class="dropdown">
110
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ Auth::user()->name }} <span class="caret"></span></a>
111
+ <ul class="dropdown-menu">
112
+ <li>{!! link_to_route('users.show', 'My profile', ['id' => $user->id]) !!}</li>
113
+ <li>{!! link_to_route('micropost.favorites', 'Favorites') !!}</li> <!--TODO-->
114
+ <li role="separator" class="divider"></li>
115
+ <li>{!! link_to_route('logout.get', 'Logout') !!}</li>
116
+ </ul>
117
+ </li>
118
+ @else
119
+ <li>{!! link_to_route('signup.get', 'Signup') !!}</li>
120
+ <li>{!! link_to_route('login.get', 'Login') !!}</li>
121
+ @endif
122
+ </ul>
123
+ </div>
124
+ </div>
125
+ </nav>
126
126
  </header>
127
127
  ```
128
128
 
@@ -141,88 +141,89 @@
141
141
 
142
142
  class UsersController extends Controller
143
143
  {
144
- public function index()
144
+ public function index()
145
- {
145
+ {
146
- $users = User::paginate(10);
146
+ $users = User::paginate(10);
147
-
147
+
148
- return view('users.index', [
148
+ return view('users.index', [
149
- 'users' => $users,
149
+ 'users' => $users,
150
- ]);
150
+ ]);
151
+ }
152
+
153
+ public function show($id)
154
+ {
155
+ $user = User::find($id);
156
+ $microposts = $user->microposts()->orderBy('created_at', 'DESC')->paginate(10);
157
+
158
+ $data = [
159
+ 'user' => $user,
160
+ 'microposts' => $microposts,
161
+ ];
162
+
163
+ $data += $this->counts($user);
164
+
165
+ return view('users.show', $data);
166
+ }
167
+
168
+ public function followings($id)
169
+ {
170
+ $user = User::find($id);
171
+ $followings = $user->followings()->paginate(10);
172
+
173
+ $data = [
174
+ 'user' => $user,
175
+ 'users' => $followings,
176
+ ];
177
+
178
+ $data += $this->counts($user);
179
+
180
+ return view('users.followings', $data);
181
+ }
182
+
183
+ public function followers($id)
184
+ {
185
+ $user = User::find($id);
186
+ $followers = $user->followers()->paginate(10);
187
+
188
+ $data = [
189
+ 'user' => $user,
190
+ 'users' => $followers,
191
+ ];
192
+
193
+ $data += $this->counts($user);
194
+
195
+ return view('users.followers', $data);
196
+ }
197
+
198
+ public function favorites($id)
199
+ {
200
+ $user = User::find($id);
201
+ $microposts = $user->microposts()->orderBy('created_at', 'desc')->paginate(10);
202
+ $favorites = $user->favorites()->orderBy('created_at', 'desc')->paginate(10);
203
+ foreach ($microposts as $micropost) {
204
+ if ($micropost->id === $favorites->user_id) {
205
+ $favorite_microposts = $micropost;
206
+ }
207
+ }
208
+
209
+ $data = [
210
+ 'user' => $user,
211
+ 'microposts' => $microposts,
212
+ 'favorites' => $favorites,
213
+ 'favorite_microposts' => $favorite_microposts,
214
+ ];
215
+
216
+ $data += $this->counts($user);
217
+
218
+ return view('users.favorites', $data);
219
+ }
151
220
  }
152
-
153
- public function show($id)
154
- {
155
- $user = User::find($id);
156
- $microposts = $user->microposts()->orderBy('created_at', 'DESC')->paginate(10);
157
-
158
- $data = [
159
- 'user' => $user,
160
- 'microposts' => $microposts,
161
- ];
162
-
163
- $data += $this->counts($user);
164
-
165
- return view('users.show', $data);
166
- }
167
-
168
- public function followings($id)
169
- {
170
- $user = User::find($id);
171
- $followings = $user->followings()->paginate(10);
172
-
173
- $data = [
174
- 'user' => $user,
175
- 'users' => $followings,
176
- ];
177
-
178
- $data += $this->counts($user);
179
-
180
- return view('users.followings', $data);
181
- }
182
-
183
- public function followers($id)
184
- {
185
- $user = User::find($id);
186
- $followers = $user->followers()->paginate(10);
187
-
188
- $data = [
189
- 'user' => $user,
190
- 'users' => $followers,
191
- ];
192
-
193
- $data += $this->counts($user);
194
-
195
- return view('users.followers', $data);
196
- }
197
-
198
- public function favorites($id)
199
- {
200
- $user = User::find($id);
201
- $microposts = $user->microposts()->orderBy('created_at', 'desc')->paginate(10);
202
- $favorites = $user->favorites()->orderBy('created_at', 'desc')->paginate(10);
203
- foreach ($microposts as $micropost) {
204
- if ($micropost->id === $favorites->user_id) {
205
- $favorite_microposts = $micropost;
206
- }
207
- }
208
-
209
- $data = [
210
- 'user' => $user,
211
- 'microposts' => $microposts,
212
- 'favorites' => $favorites,
213
- 'favorite_microposts' => $favorite_microposts,
214
- ];
215
-
216
- $data += $this->counts($user);
217
-
218
- return view('users.favorites', $data);
219
- }
220
- }
221
221
  ```
222
222
 
223
223
  __/microposts/app/Http/routes.php__
224
224
  ```
225
225
  <?php
226
+
226
227
  Route::get('/', 'WelcomeController@index');
227
228
 
228
229
  // ユーザー登録
@@ -236,20 +237,20 @@
236
237
 
237
238
  // ログイン認証を必要とするルーティンググループ
238
239
  Route::group(['middleware' => 'auth'], function () {
239
- Route::resource('users', 'UsersController', ['only' => ['index', 'show']]); // ユーザ一覧, ユーザ詳細
240
+ Route::resource('users', 'UsersController', ['only' => ['index', 'show']]); // ユーザ一覧, ユーザ詳細
240
- Route::group(['prefix' => 'users/{id}'], function () {
241
+ Route::group(['prefix' => 'users/{id}'], function () {
241
- Route::post('follow', 'UserFollowController@store')->name('user.follow');
242
+ Route::post('follow', 'UserFollowController@store')->name('user.follow');
242
- Route::delete('unfollow', 'UserFollowController@destroy')->name('user.unfollow');
243
+ Route::delete('unfollow', 'UserFollowController@destroy')->name('user.unfollow');
243
- Route::get('followings', 'UsersController@followings')->name('users.followings');
244
+ Route::get('followings', 'UsersController@followings')->name('users.followings');
244
- Route::get('followers', 'UsersController@followers')->name('users.followers');
245
+ Route::get('followers', 'UsersController@followers')->name('users.followers');
246
+ });
247
+ Route::resource('microposts', 'MicropostsController', ['only' => ['store', 'destroy']]); // 投稿の保存, 投稿の削除
248
+
249
+ // お気に入り
250
+ Route::post('favorite/{id}', 'FavoritesController@store')->name('micropost.favorite');
251
+ Route::delete('unfavorite/{id}', 'FavoritesController@destroy')->name('micropost.unfavorite');
252
+ Route::get('favorites/{id}', 'UsersController@favorites')->name('micropost.favorites');
245
253
  });
246
- Route::resource('microposts', 'MicropostsController', ['only' => ['store', 'destroy']]); // 投稿の保存, 投稿の削除
247
-
248
- // お気に入り
249
- Route::post('favorite/{id}', 'FavoritesController@store')->name('micropost.favorite');
250
- Route::delete('unfavorite/{id}', 'FavoritesController@destroy')->name('micropost.unfavorite');
251
- Route::get('favorites/{id}', 'UsersController@favorites')->name('micropost.favorites');
252
- });
253
254
  ```
254
255
 
255
256
  よろしくお願いします。

2

「試したこと」を追加

2018/04/12 10:41

投稿

KIYZ
KIYZ

スコア17

title CHANGED
File without changes
body CHANGED
@@ -61,6 +61,28 @@
61
61
  }
62
62
  ```
63
63
 
64
+ ### 試したこと
65
+
66
+ __UsersController.php__ の `show(){}` の様に、
67
+ ```
68
+ public function index($id)
69
+ {
70
+ $users = User::paginate(10);
71
+ $user = User::find($id);
72
+
73
+ return view('users.index', [
74
+ 'users' => $users,
75
+ 'user' => $user,
76
+ ]);
77
+ }
78
+ ```
79
+ とすれば __index.blade.php__ にログインユーザーの情報を渡すことができるのではないかと思ったのですが、それをすると Missing Argument エラーが出てしまいます。
80
+ ```
81
+ 1/1
82
+ ErrorException in UsersController.php line 14:
83
+ Missing argument 1 for App\Http\Controllers\UsersController::index()
84
+ ```
85
+
64
86
  ### 該当のソースコード
65
87
 
66
88
  ※GitHubで下記以外のファイルのコードもご確認頂けます。

1

「ヒントになりそうなこと」を追加

2018/04/12 09:22

投稿

KIYZ
KIYZ

スコア17

title CHANGED
File without changes
body CHANGED
@@ -45,6 +45,22 @@
45
45
  Undefined variable: user
46
46
  ```
47
47
 
48
+ ### ヒントになりそうなこと
49
+
50
+ __UsersController.php__ の `index()` に以下を追記すると1.と2.を両方とも実現することができます。
51
+ ```
52
+ public function index()
53
+ {
54
+ $users = User::paginate(10);
55
+ $user = User::find(2); // 追記。 動作確認としてidを直接指定。$userにログインユーザーのidを代入することができれば実現可能?
56
+
57
+ return view('users.index', [
58
+ 'users' => $users,
59
+ 'user' => $user, // 追記。ユーザー一覧ページのviewに渡す
60
+ ]);
61
+ }
62
+ ```
63
+
48
64
  ### 該当のソースコード
49
65
 
50
66
  ※GitHubで下記以外のファイルのコードもご確認頂けます。