gpt4 book ai didi

php - 我在 laravel 资源控制中更新功能有问题

转载 作者:行者123 更新时间:2023-12-04 15:22:24 25 4
gpt4 key购买 nike

当我通过资源 Controller 更新时,Laravel 会显示这个错误

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpExceptionThe POST method is not supported for this route. Supported methods: GET, HEAD, PUT, PATCH, DELETE.

我是 laravel 的新手。花更多时间来解决这个问题。

这是我的 Controller 。

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Category;

class CategoriesController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}

/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$arr['categories'] = Category::all();
return view('admin.categories.index')->with($arr);
}

/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('admin.categories.create');
}

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request, Category $category)
{
$category-> title = $request-> title;
$category->save();
return redirect()->route('admin.categories.index');

}

/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}

/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit(Category $category)
{
$arr['category'] = $category;
return view('admin.categories.edit')->with($arr);
}

/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/

public function update(Request $request, Category $category)
{
$category->title = $request->title;
$category->update();
return redirect()->route('admin.categories.index');

}


/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

这是我的路线。

Route::get('/home', 'HomeController@index')->name('home');
Route::get('/admin', 'HomeController@test')->name('admin');
Route::get('/test', 'TestController@index')->name('test');
Route::resource('/admin/categories', 'Admin\CategoriesController', ['as'=>'admin']);

这是我的 edit.blade.php

@extends('layouts.admin')
@section('content')

<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0 text-dark"> Edit Categories</h1>
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{ url('/admin') }}">Dashboard</a></li>
<li class="breadcrumb-item active"> Edit Categories</li>
</ol>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<section class="content">
<div class="container-fluid">
<form method="post" action="{{ route('admin.categories.update', $category->id) }}">
<input type="hidden" name="_token" value="{{ csrf_token() }}"
<div class="form-group">
<div class="row">
<label class="col-md-3">Title</label>
<div class="col-md-6">
<input type="text" name="title" class="form-control" value="{{ $category->title }}">
</div>
<div class="clearfix"> </div>
</div>
<div class="form-group">
<input type="submit" class="btn btn-info" value="Save">
</div>
</div>
</form>
</div>
</section>

@endsection

最佳答案

对于rosource Controller ,更新方法应该是PUT或者PATCH,比如:

<form action="/foo/bar" method="POST">
@method('PATCH')
</form>

所以在你的代码中:

<form method="post" action="{{ route('admin.categories.update', $category->id) }}">
@method('PATCH')
<input type="hidden" name="_token" value="{{ csrf_token() }}"
<div class="form-group">
<div class="row">
<label class="col-md-3">Title</label>
<div class="col-md-6">
<input type="text" name="title" class="form-control" value="{{ $category->title }}">
</div>
<div class="clearfix"> </div>
</div>
<div class="form-group">
<input type="submit" class="btn btn-info" value="Save">
</div>
</div>
</form>

参见的官方文档Resource Controller

关于php - 我在 laravel 资源控制中更新功能有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63027634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com