ララベルの初心者です。
ララベルを使って、掲示板アプリを作成しています。
edit.blade.phpのformで更新処理を実行するために、
post_idに紐づく投稿に対して、コントローラー内のupdateメソッドを実行するようにしたいのですが、
下記のようにエラーが発生していまっている状況です。
まずララベルの基本的なことから質問させていただきたいでのすが、
edit.blade.phpの['post_id' => $post"]の$postの変数部分には具体的にどこのデータが入ってきますでしょうか?
またどんな変数、値をここにいれるべきでしょうか?
データの受け渡しで混乱している状況であり、大変基本的なことだと思いますが、ご教示いただけると幸いです。
edit.blade.php
<form method="POST" action="{{ route('posts.update', ['post_id' => $post"] ) }}">
web.php
Route::post('/post/{post_id}/edit', 'PostsController@update')->name('posts.update');
PostController
//投稿編集処理を実行する。 public function update($post_id, Request $request) { $post = new Post; $post->title = $request->title; //コンテンツ $post->body = $request->body; $post->save(); return redirect()->route('posts.show', ['post' => $post]); }
web.php
//投稿フォームページ Route::group(['middleware' => 'auth'], function() { Route::get('/post', 'PostsController@showCreateForm')->name('posts.create'); Route::post('/post', 'PostsController@create'); //投稿詳細ページ Route::get('/post/{post_id}', 'PostsController@show')->name('posts.show'); //投稿編集画面ページ Route::get('/post/{post_id}/edit', 'PostsController@showEditForm')->name('posts.edit'); //投稿編集 Route::post('/post/{post_id}/edit', 'PostsController@update')->name('posts.update'); //投稿削除 Route::delete('/post/{post_id}', 'PostsController@destroy')->name('posts.destroy'); });
PostContoller.php
//投稿編集ページを表示する。 public function showEditForm($post_id) { return view('posts/edit'); } //投稿編集処理を実行する。 public function update($post_id, Request $request) { $post = new Post; $post->title = $request->title; //コンテンツ $post->body = $request->body; $post->save(); return redirect()->route('posts.show', ['post' => $post]); } //投稿詳細ページを表示する。 public function show($post_id) { $post = Post::findOrFail($post_id); return view('posts.show', [ 'post' => $post, ]); }
edit.blade.php
@extends('layout') @section('content') <div class="container mt-4"> <div class="border p-4"> <h1 class="h5 mb-4"> 投稿の編集 </h1> <form method="POST" action="{{ route('posts.update', ['post_id' => $post] ) }}"> @csrf @method('PUT') <fieldset class="mb-4"> <div class="form-group"> <label for="title"> タイトル </label> <input id="title" name="title" class="form-control {{ $errors->has('title') ? 'is-invalid' : '' }}" value="{{ old('title') ?: $post->title }}" type="text" > @if ($errors->has('title')) <div class="invalid-feedback"> {{ $errors->first('title') }} </div> @endif </div> <div class="form-group"> <label for="body"> 本文 </label> <textarea id="body" name="body" class="form-control {{ $errors->has('body') ? 'is-invalid' : '' }}" rows="4" >{{ old('body') ?: $post->body }}</textarea> @if ($errors->has('body')) <div class="invalid-feedback"> {{ $errors->first('body') }} </div> @endif </div> <div class="mt-5"> <a class="btn btn-secondary" href="{{ route('posts.show', ['post_id' => 1]) }}"> キャンセル </a> <button type="submit" class="btn btn-primary"> 更新する </button> </div> </fieldset> </form> </div> </div> @endsection
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/07 00:14