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
Answer
Answer
Answer
Answer
Answer
Answer
Answer
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