php - Post Table is not Updating in Laravel

After creating my posts, I tried to submit a post, but I discovered that the post was not updating into the database, below is index.blade.php

@extends('layouts.app')

@section('content')

    <div class="flex justify-center">
        <div class="w-8/12 bg-white p-6 rounded-lg">
            <form action="{{ route('posts') }}" method="post" class="mb-4">
                @csrf
                <div class="mb-4">
                    <label for="body" class="sr-only">Body</label>
                    <textarea name="body" id="body" cols="30" rows="4" class="by-gray-100 border-2
                    w-full p-4 rounded lg @error('body') border-red-500 @enderror" placeholder="Post something!"></textarea>
                    @error('body')
                        <div class="text-red-500 mt-3 text-sm">
                            {{$message}}
                        </div>    
                    @enderror
                </div>
                <div>
                    <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded
                    font-medium">Post</button>
                </div>
            </form>
            @if ($posts->count()))
                iterate

            @else
                There are no posts...
            @endif
        </div>
    </div>

@endsection

PostController.php

<?php

namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function index(){
        $posts= Post::get(); //Collect all...
        
        return view('posts.index', [
            'posts' => $posts
        ]);
    }

    public function store(Request $request){
        $this->validate($request, [
            'body' => 'required',
        ]);

       /* Post::create([
            'user_id' => auth()->id(),
            'body' => $request->body,
        ]);*/
    }
}

Post.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasFactory;

    protected $fillable= [
        'body'
    ];
}

my web.php file

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\RegisterController;
use App\Http\Controllers\Auth\LogoutController;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\PostController;

/*
|

Have checked through to see if there are any errors, but have found none, though am new to Laravel, and am using Laravel 8.1, but yet still the post is not updating into the database

Have updated my question, I tried the form action, but it didn't work, it tells me posts.store not defined, though I already made the posts.store in my web.php file, you can check

Answer

Answer

Answer

Answer

Answer

Answer

Answer

---- | Web Routes |

Answer

Answer

Answer

Answer

Answer

Answer

Answer

---- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { //return view('welcome'); }); // Route::get('/', function () { // return view('posts.index'); // }); Route::get('/', function () { return view('home'); })->name('home'); Route::get('/dashboard', [DashboardController::class, 'index'] ) ->name('dashboard') ->middleware('auth'); Route::get('/register', [RegisterController::class, 'index'] )->name('register'); Route::post('/register', [RegisterController::class, 'store'] ); Route::get('/login', [LoginController::class, 'index'] )->name('login'); Route::post('/login', [LoginController::class, 'store'] ); Route::post('/logout', [LogoutController::class, 'store'] )->name('logout'); Route::get('/login', [LoginController::class, 'index'] )->name('login'); Route::get('/posts', [PostController::class, 'index'] )->name('posts'); Route::post('/posts', [PostController::class, 'store'] );

Answer

Solution:

How are your routes defined? You likely need to update your form action to posts.store

<form action="{{ route('posts.store') }}" method="post" class="mb-4">

instead of

<form action="{{ route('posts') }}" method="post" class="mb-4">

Source