Laravelでcreate処理の後にshowページに行かずに「419|Page Expired」が表示されてしまう。
解決したいこと
投稿作成処理後、showページに飛ばしたい
発生している問題・エラー
投稿作成処理後にshowページへ飛ばずに、「419|Page Expired」が表示されてしまう。
なお、fillableの指定はしており、データベースに値は保存はされています。
下記ソースコードになります。
create.blade.php
<!doctype html>
<html lang="{{ str_replace("_", "-", app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Blog</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
</head>
<body>
<h1>Blog name</h1>
<form action="/posts" method="POST">
<div class="title">
<h2>Title</h2>
<input type="text" name="post[title]" placeholder="タイトル"/>
</div>
<div class="body">
<h2>Body</h2>
<textarea name="post[body]" placeholder="今日も1日お疲れさまでした。"></textarea>
</div>
<input type="submit" value="保存"/>
</form>
</body>
</html>
show.blade.php
<!doctype html>
<html lang="{{ str_replace("_", "-", app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Posts</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<link rel="stylesheet" href="/css/app.css">
</head>
<body>
<h1 class="title">
{{ $post->title }}
</h1>
<div class="content">
<div class="content__post">
<h3>本文</h3>
<p>{{ $post->body }}</p>
</div>
</div>
<div class="footer">
<a href="/">戻る</a>
</div>
</body>
</html>
web.php
Route::get('/', 'PostController@index');
Route::get('/posts/create', 'PostController@create');
Route::get('/posts/{post}', 'PostController@show');
Route::post('/posts', 'PostController@store');
PostController.php
namespace App\Http\Controllers; #名前空間
use App\Post; #Postモデルをインポート
use Illuminate\Http\Request; #vender下にあるLaravelの大事なコンポーネント(便利なクラスやメソッド)が置いてある場所をimport
class PostController extends Controller {
/**
* Post一覧を表示する
*
* @param Post Postモデル
* @return array Postモデルリスト
*/
public function index(Post $post) {
#Postの中身をインスタンス化し$postに格納
#View側でwithメソッドでわたした変数名で値を参照
return view('index')->with(['posts' => $post->getPeginateByLimit()]);
}
public function show(Post $post) {
return view('show')->with(['post' => $post]);
}
public function create() {
return view('create');
}
public function store(Request $request, Post $post) {
$input = $request['post']; #post->[title, body]入れ子なので
$post->fill($input)->save(); # create($input)でもいける
return redirect('/posts/' . $post->id);
}
}
自分で試したこと
調べてみると、原因としては@csrfの書き忘れが多いようですが、自分は既にform内に書いていたので、該当せず。
何かお心当たりあればよろしくお願いします。
また、\App\Http\Middleware\VerifyCsrfToken::class,をコメントアウトして、トークンを無効化するということもしてみましたが、だめでした。
0