yuppe0328
@yuppe0328

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Laravelでcreate処理の後にshowページに行かずに「419|Page Expired」が表示されてしまう。

Q&A

Closed

解決したいこと

投稿作成処理後、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

No Answers yet.

Your answer might help someone💌