i am using laravel and laravel splade when i am updating a users i get
The POST method is not supported for route users/9. Supported methods: GET, HEAD, PUT, PATCH, DELETE.
i have used route resource
my controller
<?php
namespace App\Http\Controllers;
use App\Http\Requests\UserStoreRequest;
use Illuminate\Support\Collection;
use App\Models\User;
use ProtoneMedia\Splade\Facades\SEO;
use ProtoneMedia\Splade\Facades\Toast;
use ProtoneMedia\Splade\SpladeTable;
use Spatie\QueryBuilder\AllowedFilter;
use Spatie\QueryBuilder\QueryBuilder;
class UsersController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
SEO::title('Multi-auth-package');
$globalSearch = AllowedFilter::callback('global', function (
$query,
$value
) {
$query->where(function ($query) use ($value) {
Collection::wrap($value)->each(function ($value) use ($query) {
$query
->orWhere('name', 'LIKE', "%$value%")
->orWhere('email', 'LIKE', "%$value%")
->orWhere('type', 'LIKE', "%$value%");
});
});
});
$users = QueryBuilder::for(User::class)
->defaultSort('name')
->allowedFilters([
'id',
'name',
'email',
'type',
'created_at',
$globalSearch,
])
->allowedSorts(['id', 'name', 'email', 'type', 'created_at'])
->paginate()
->withQueryString();
return view('users.index', [
'users' => SpladeTable::for($users)
->defaultSort('name')
->withGlobalSearch()
->column('id', sortable: true, searchable: true)
->column(
'name',
canBeHidden: false,
sortable: true,
searchable: true
)
->column('email', sortable: true, searchable: true)
->column('type')
->selectFilter('type', [
0 => 'User',
1 => 'Admin',
2 => 'SuperAdmin',
])
->column('created_at', sortable: true, searchable: true)
->column('action')
->rowLink(fn($user) => route('users.edit', $user->id)),
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
SEO::title('Multi-auth-package');
return view('users.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(UserStoreRequest $request)
{
SEO::title('Multi-auth-package');
User::create($request->validated());
Toast::title('Success!')
->message('User Created Successfully!')
->success()
->info()
->leftTop()
->backdrop()
->autoDismiss(3);
return redirect()->route('users.index');
}
/**
* Display the specified resource.
*/
public function show(User $user)
{
SEO::title('Multi-auth-package');
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(User $user)
{
SEO::title('Multi-auth-package');
return view('users.edit', [
'user' => $user,
]);
}
/**
* Update the specified resource in storage.
*/
public function update(UserStoreRequest $request, User $user)
{
SEO::title('Multi-auth-package');
$user->update($request->validated());
Toast::title('Success!')
->message('User Updated Successfully!')
->success()
->leftTop()
->info()
->backdrop()
->autoDismiss(3);
return redirect()->route('users.index');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(User $user)
{
SEO::title('Multi-auth-package');
User::destroy($user);
Toast::title('warning!')
->message('User Deleted Successfully!')
->success()
->leftTop()
->backdrop()
->autoDismiss(3);
return redirect()->route('users.index');
}
}
my edit.blade.php
<x-layout>
<x-splade-form confirm="are you sure" :default="$user" :action="route('users.update', $user)" method="POST"
class="w-full md:w-4/12 justify-center mx-auto mt-16 space-y-4 px-5 py-5 bg-white">
@method('PUT')
@csrf
<h1 class="text-xl font-semibold text-center">Edit User, {{ $user->name }}</h1>
<!-- Form fields -->
<x-splade-input type="text" name="name" label="Full Name" class="w-full" />
<x-splade-input name="email" type="text" label="Email" class="w-full" />
<x-splade-input name="type" label="Type" class="w-full" />
<x-splade-input type="password" name="password" label="Password" class="w-full" />
<x-splade-input type="password" name="password_confirmation" label="Confirm Password" class="w-full" />
<x-splade-button
class="hover:bg-gray-200 hover:text-black transition w-full md:w-28 bg-gray-800 h-10 px-2 text-white font-semibold rounded font-sans">
Submit
</x-splade-button>
</x-splade-form>
</x-layout>
my web.php
<?php
use App\Http\Controllers\UsersController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\AdminDashboardController;
use App\Http\Controllers\SuperAdminDashboardController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| 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::middleware(['splade'])->group(function () {
Route::get('/', fn() => view('home'))->name('home');
Route::get('/docs', fn() => view('docs'))->name('docs');
Route::get('/logs', fn() => view('logs'))->name('logs');
Route::get('/login', fn() => view('auth.login'))->name('login');
Route::get('/register', fn() => view('auth.register'))->name('register');
Route::get('/forgot-password', fn() => view('auth.forgot-password'))->name(
'forgot-password'
);
Route::get('/reset-password', fn() => view('auth.reset-password'))->name(
'reset-password'
);
Route::middleware('auth')->group(function () {
Route::resource('users', UsersController::class);
});
// Registers routes to support the interactive components...
Route::spladeWithVueBridge();
// Registers routes to support password confirmation in Form and Link components...
Route::spladePasswordConfirmation();
// Registers routes to support Table Bulk Actions and Exports...
Route::spladeTable();
// Registers routes to support async File Uploads with Filepond...
Route::spladeUploads();
});