Laravelで、会員サイトを作っています。
ユーザーがマイページで自分の猫と、その猫に紐づく形で写真を登録できるようにしたいです。
登録した写真の一覧の表示(index)はできたのですが(登録はTinkerで行いました)、
ユーザーと猫に紐づく形での登録(store)に手間取っております…
ご教示いただけると助かります・・・
試したこと
①表示(index)はできたので、同じように実装してみましたが、以下で躓いています。
写真を登録するページのURL:/users/1/photos/8
のように、ユーザーidが1、猫idが8です。
しかし、submitするとURLが /users/8/photos/1
になってしまい、そんなユーザーいないとエラーが出てしまいます。
以下、コードです。
View
{!! Form::open(['route' => ['user.photostore', $user->id, $cat->id], 'files' => true,'method' => 'post']) !!} {{ csrf_field() }} <div class="form-group"> {!! Form::label('image_path', 'Photo') !!} <input type="file" name="image_path"> </div> <div class="form-group"> {!! Form::label('comment', 'コメント') !!} {!! Form::textarea('comment', null, ['size' => '70x5']) !!} </div> {!! Form::submit('投稿', ['class' => 'btn btn-apply']) !!} {{ Form::close() }}
Route(web.php)
Route::group(['middleware' => 'auth:user'], function() { // 写真機能で追加 ユーザーの猫の写真一覧を表示 Route::group(['prefix' => 'users/{userid}'], function() { Route::get('photos/{catid}', 'PhotosController@userphotoindex')->name('user.photoindex'); Route::post('photos/{catid}', 'PhotosController@userphotostore')->name('user.photostore'); }); });
PhotosController
class PhotosController extends Controller { // ユーザーページで猫の写真一覧を取得する処理 public function userphotoindex($userid, $catid) { $data = []; if (\Auth::check()) { $cat = Cat::find($catid); $user = User::find($userid); $photos = $cat->photos()->where('user_id', $user->id)->orderBy('created_at', 'desc')->paginate(20); $data = [ 'cat' => $cat, 'user' => $user, 'photos' => $photos, ]; } //他のユーザーidを手入力してアクセスした時の処理。トップにリダイレクト if ($user->id == \Auth::user()->id) { return view('auth.usercatsphoto', $data); } else { $cats = Cat::where('status', '募集中')->paginate(20); return view('index', ['cats' => $cats,]); } } public function userphotostore(Request $request, $userid, $catid) { // 後でバリデーション入れる $photo = new Photo; // 画像をリサイズ //省略します $photo->image_path = $url; $photo->comment = $request->comment; $photo->cat_id = $catid; $photo->user_id = $userid; $photo->save(); return back(); } }
Controllerのところで、dd($photo); で$photoの中身を見てみましたが、確かに、user_idが8に、cat_idが1というように反対になってしまってました。。
記述ミスがあると思うのですが、アドバイスいただけると助かります。
②
また、今回のように、フォームで自分のユーザーidや猫idを登録しなくても、写真とコメントを登録すれば、自動的にユーザーidと猫idが入るようにしたいといった場合、このようなやり方で合っておりますでしょうか。
もっとよいやり方があればご教示いただけると嬉しいです。
よろしくお願いいたします
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/28 14:44