質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

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

Q&A

解決済

1回答

413閲覧

データベースのデータの更新ができない

tou.23.bc

総合スコア50

Laravel

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

0グッド

0クリップ

投稿2022/10/14 11:56

編集2022/10/14 11:58

前提

laravel でデータベースのデータを更新しようとこころみているのですがデータが更新されません。(PostControlloerのchecked method)
チェックボックスをおすとチェックがデータとして登録されるようにしたいです。
ですがチェックボックス以前に、テキストすら更新することができません。

419error がでるのですが、@csrfはきちんと書いています。

私のコードのどこが間違っているのでしょうか?
おそらくweb.phpのpatchに誤りがあるのではないかと予想しております。

イメージ説明

イメージ説明

web.php

1<?php 2 3use Illuminate\Support\Facades\Route; 4use App\Http\Controllers\PostController; 5 6Route::get('/', [PostController::class, 'index']) 7 ->name('posts.index'); 8 9Route::get('/posts/{post}', [PostController::class, 'show']) 10 ->name('posts.show') 11 ->where('post', '[0-9]+'); 12 13Route::patch('/posts/{post}/checked', [PostController::class, 'checked']) 14 ->name('posts.checked') 15 ->where('post', '[0-9]+'); 16

PostController.php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Models\Post; 7use App\Http\Requests\PostRequest; 8 9class PostController extends Controller 10{ 11 12 public function index() 13 { 14 $posts = Post::latest()->get(); 15 16 return view('index') 17 ->with(['posts' => $posts]); 18 } 19 20 public function show(Post $post) 21 { 22 return view('posts.show') 23 ->with(['post' => $post]); 24 } 25 26 public function create() 27 { 28 return view('posts.create'); 29 } 30 31 public function store(PostRequest $request) 32 { 33 $post = new Post(); 34 35 $post->title = $request->title; 36 37 $post->body = $request->body; 38 39 $post->save(); 40 41 return redirect() 42 ->route('posts.index'); 43 44 } 45 46 public function checked(Post $post) 47 { 48 49 // $post->is_done = !$post->is_done; 50 $post->title = 'hogehoge'; 51 52 $post->save(); 53 54 return redirect() 55 ->route('posts.index'); 56 57 } 58}

index.blade.php

1 <ul> 2 @forelse ($posts as $post) 3 <li class="li-ex" data-id="{{ $post->id }}"> 4 <div class="title-container"> 5 <form method="post" action="{{ route('posts.checked', $post) }}"> 6 @method('PATCH') 7 @csrf 8 <input type="checkbox" {{ $post->is_done ? 'checked' : ''; }}> 9 </form> 10 <a href="{{ route('posts.show', $post) }}" class="{{ $post->is_done ? 'done' : ''; }}"> 11 <span>{{ $post->title }}</span> 12 </a> 13 </div> 14 <form method="post" action="{{ route('posts.destroy', $post) }}"> 15 @method('DELETE') 16 @csrf 17 <span class="delete">[x]</span> 18 </form> 19 </li> 20 @empty 21 <li>No posts yet!</li> 22 @endforelse 23 </ul>
public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('body'); $table->boolean('is_done')->default(false); $table->timestamps(); // created_at, updated_at }); }

laravel8
linuxのdocker で開発しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

すいません。javascriptのエラーがじゃ増してたみたいです。ごめんなさい

投稿2022/10/14 12:08

tou.23.bc

総合スコア50

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/10/14 21:24

誤る必要は全く解決したのはよかったのですが、提示コードにはJavaScriptが含まれていないためどうなっていてどういうエラーがあってどう対応して解決したのか具体的に記載されないと誰にも分からないと思います。 回答を修正して追記してください。
tou.23.bc

2022/10/14 21:39

回答ありがとうございます。 この処理と並行でfetchAPIをつかってajaxをしていたのですが、そこのエラーがひびいていました。 そこをコメント化することで動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問