質問編集履歴

1 文法の修正

toyop

toyop score 18

2020/07/14 00:47  投稿

Laravelでデータベースの編集と更新がうまくいかない
Laravelでフォームからアップロードした内容を、ユーザがlist.blade.phpにある編集ボタンから編集ページ(edit.blade.php)へ飛び、更新できるようにしたいのですが、うまくいきません。更新ボタンを押すと、/edit/{id}に飛んで編集ページが表示されるはずなのですが、419|Page Expiredとなってしまいます。
以下が関連部分のコードになるのですが、知恵をお貸しいただけないでしょうか。
---
**web.php**
```php
Route::get('/edit/{id}', 'TestController@edit');
Route::post('/edit/{id}', 'TestController@update');
```
---
**TestController**
```php
public function edit(Request $request)
   {
       $test = Test::findOrFail($request->id);
       return view('test.edit', ['test' => $test]);
   }
   public function update(Request $request)
   {
       $test = Test::find($request->id);
       $test->name = $request->name;
       $path = $request->file('image')->store('public/image');
       $test->image = str_replace('public/', 'storage/', $path);
       $test->save();
       return redirect('/tests')->with('flash_message', '更新が完了しました');
   }
```
---
**list.blade.php**
```php
@extends('layouts.app')
@section('title', '投稿記事一覧')
@section('content')
<!-- フラッシュメッセージ -->
@if (session('flash_message'))
<div class="flash_message">
{{ session('flash_message') }}
</div>
@endif
<main class="mt-4">
@yield('content')
</main>
<!-- フラッシュメッセージここまで -->
<a href="/articles/create" class="btn btn-primary">新規投稿</a>
@if(count($tests) > 0)
 @foreach($tests as $test)
   <a href="/tests/{{$test->id}}">
     <div class="card my-3">
       <div class="card-body">
         <h5 class="card-title">{{$test->name}}</h5>
         <p class="card-text"><img src="/storage/image/{{$test->image}}"></p>
       </div>
       <form method="post" action="/test/delete/{{$test->id}}">
       {{ csrf_field() }}
       <input type="submit" value="削除" class="btn btn-danger mt-3" onclick='return confirm("本当に削除しますか?");'><br>
       </form>
       <form method="post" action="/edit/{{$test->id}}">
       <input type="submit" value="更新" class="btn btn-primary mt-3"> //☆更新ボタン
       <br></br>
       </form>
     </div>
   </a>
 @endforeach
@endif
@endsection
```
---
**edit.blade.php**
```ここに言語を入力
@extends('layouts.app')
@section('content')
<div>
   <form action="/edit/{id}" method="post">
       {{ csrf_field() }}
           料理名:<input type="text" name="name" value='{{ $test->name }}'><input type='text' name='title' value='{{ $article->title }}'><br>
           料理名:<input type="text" name="name" value='{{ $test->name }}'><input type='text' name='title' value='{{ $test->title }}'><br>
           画像: <input type="file" name="image"><br>
           <input type='submit' value='投稿'>
   </form>
</div>
@endsection
```
よろしくお願いいたします。
  • PHP

    33151 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Laravel

    3428 questions

    LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

  • データベース

    2072 questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る